У нашого друга Міккі Мауса є ліс, що складається з вершин. Міккі хоче виконати такі три операції над цими вершинами:
Провести ребро між двома вершинами.
Стерти останні проведених ребер.
Перевірити, чи існує шлях між двома вершинами.
Ваше завдання — допомогти Міккі швидко відповідати на операцію третього типу.
Перший рядок містить (1 \leq N \leq 10^5) — кількість вершин.
Другий рядок містить (1 \leq Q \leq 10^5) — кількість запитів трьох типів.
Під час обробки необхідно підтримувати змінну , яка спочатку дорівнює . Кожний запит типу та задається трійкою чисел 0~x_i~y_i, яка визначає номери вершин, між якими потрібно провести ребро або перевірити шлях. Вони обчислюються так:
A_i = ((x_i + p + i) \bmod N) + 1
B_i = ((y_i + 1 - p + i) \bmod N) + 1
1 \leq A_i,~x_i,~B_i,~y_i \leq N.
Запити типу задаються парою чисел 1~x_i, де x_i не перевищує кількість проведених на цей момент ребер.
Після кожного запиту типу слід оновити відповідно до результату (YES , NO ).
Для кожного запиту типу виведіть "YES" (без лапок), якщо шлях між двома вершинами існує, інакше "NO" (без лапок), якщо шляху немає.
Приклад 1