Якщо ви не вірите, ви не зможете досягти.
Спочатку є вершин і немає жодних ребер. Кожне додане ребро має ціле число c_i на ньому. Ми визначаємо простий шлях між двома вершинами та , які належать до однієї компоненти, як найкоротший шлях від до . Розглянемо простий шлях між двома вершинами як гарний, якщо кожне значення на цьому шляху має парну кількість входжень. Вам потрібно відповісти на запитів типів:
1 \: u \: v \: c \: (1 \le c \le 4 \cdot 10^9) — додати ребро, яке з'єднує вершини та зі значенням на ньому
2 \: u \: v \: — сказати, чи є простий шлях між вершинами та гарним. Якщо між ними немає шляху, виведіть
— сказати кількість пар вершин та (1 \leq a < b \leq n), таких що вони належать до однієї компоненти з та простий шлях між ними вважається гарним
— сказати кількість пар вершин та (1 \leq a < b \leq n), таких що простий шлях між ними вважається гарним, і існує шлях від до .
Гарантується, що в усіх запитах першого типу ребро з'єднує дві різні компоненти.
Перший рядок містить два цілі числа (1 \le n \le 2 \cdot 10^5) та (1 \le q \le 2 \cdot 10^5) — кількість вершин та запитів відповідно.
Кожен з наступних рядків містить опис запиту. Перше ціле число t_i визначає тип запиту.
t_i = 1\: визначає запит першого типу і за ним йдуть цілі числа , (1 \leq u \neq v \leq n), (1 \le c \le 4 \cdot 10^9)
t_i = 2\: визначає запит другого типу і за ним йдуть цілі числа , (1 \le u,v \le n)
t_i = 3\: визначає запит третього типу і за ним йде ціле число (1 \le u \le n)
t_i = 4\: визначає запит четвертого типу.
Для кожного запиту другого типу виведіть
-1, якщо простого шляху не існує
YES, якщо простий шлях вважається гарним
NO в іншому випадку.
Для кожного запиту третього або четвертого типу виведіть одне ціле число — відповідь на відповідний запит.
Відповіді на запити повинні бути виведені в тому ж порядку, в якому вони з'являються у вхідних даних.
Приклад 1
( балів): для всіх t_i=1 u_i = 1;
( балів): n,q \le 20;
( балів): n,q \le 1000;
( бали): t_i \le t_{i+1}, t_i \le 2, c = 1;
( балів): t_i \le t_{i+1}, t_i \le 2, c \le 8;
( балів): t_i \le t_{i+1}, t_i \le 2;
( балів): q = n, t_i = 1 для 1 \le i < n, t_q = 4;
( балів): існує ціле число таке, що всі t_i = 1 для всіх 1 \le i \le e, і для всіх e < j \le q t_i \neq 1;
( балів): c \le 1000, граф та тести генеруються випадковим чином, тобто для кожної вершини (2 \le v \le n) ми випадково вибираємо p_v (1 \le p_v < v), потім ми генеруємо випадкову перестановку та робимо v = perm_v, p_v = perm_{p_v}. Тип запиту вибирається випадково (ми не виберемо перший тип, якщо немає ребер для додавання). Усі значення в запитах вибираються випадково;
( балів): без додаткових обмежень.