Граф? Ви впевнені?
Спочатку є вершин і немає жодних ребер. Кожне додане ребро має ціле число на ньому. Ми визначаємо простий шлях між двома вершинами та , які належать до однієї компоненти, як найкоротший шлях від до . Розглянемо простий шлях між двома вершинами як гарний, якщо кожне значення на цьому шляху має парну кількість входжень. Вам потрібно відповісти на запитів типів:
() — додати ребро, яке з'єднує вершини та зі значенням на ньому
— сказати, чи є простий шлях між вершинами та гарним. Якщо між ними немає шляху, виведіть
— сказати кількість пар вершин та (), таких що вони належать до однієї компоненти з та простий шлях між ними вважається гарним
— сказати кількість пар вершин та (), таких що простий шлях між ними вважається гарним, і існує шлях від до .
Гарантується, що в усіх запитах першого типу ребро з'єднує дві різні компоненти.
Вхідні дані
Перший рядок містить два цілі числа () та () — кількість вершин та запитів відповідно.
Кожен з наступних рядків містить опис запиту. Перше ціле число визначає тип запиту.
визначає запит першого типу і за ним йдуть цілі числа , (), ()
визначає запит другого типу і за ним йдуть цілі числа , ()
визначає запит третього типу і за ним йде ціле число ()
визначає запит четвертого типу.
Вихідні дані
Для кожного запиту другого типу виведіть
-1
, якщо простого шляху не існуєYES
, якщо простий шлях вважається гарнимNO
в іншому випадку.
Для кожного запиту третього або четвертого типу виведіть одне ціле число — відповідь на відповідний запит.
Відповіді на запити повинні бути виведені в тому ж порядку, в якому вони з'являються у вхідних даних.
Приклади
Оцінювання
( балів): для всіх ;
( балів): ;
( балів): ;
( бали): , , ;
( балів): , , ;
( балів): , ;
( балів): , для , ;
( балів): існує ціле число таке, що всі для всіх , і для всіх ;
( балів): , граф та тести генеруються випадковим чином, тобто для кожної вершини () ми випадково вибираємо (), потім ми генеруємо випадкову перестановку та робимо , . Тип запиту вибирається випадково (ми не виберемо перший тип, якщо немає ребер для додавання). Усі значення в запитах вибираються випадково;
( балів): без додаткових обмежень.