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