Дано неорієнтований граф. Над ним у заданому порядку виконують операції двох типів:
cut — розрізати граф, тобто видалити з нього ребро;
ask — перевірити, чи лежать дві вершини графа в одній компоненті зв'язності.
Відомо, що після виконання всіх операцій типу cut ребер у графі не залишилось. Знайдіть результат виконання кожної з операцій типу ask.
Перший рядок містить три цілих числа, відокремлених пробілами — кількість вершин графа , кількість ребер та кількість операцій (1 \le n \le 50000, 0 \le m \le 10^5, m \le k \le 150000).
Наступні рядків описують ребра графа; -й з цих рядків містить два числа u_i та v_i (1 \le u_i, v_i \le n) — номери кінців -го ребра. Вершини нумеруються з одиниці; граф не містить кратних ребер і петель.
Далі йде рядків, що описують операції. Операція типу cut задається рядком "cut u v" (1 \le u, v \le n), що означає, що з графа видаляють ребро між вершинами та . Операція типу ask задається рядком "ask u v" (1 \le u, v \le n), що означає, що потрібно дізнатися, чи знаходяться на цей момент вершини та в одній компоненті зв'язності. Гарантується, що кожне ребро графа зустрічається в операціях типу cut рівно один раз.
Для кожної операції ask виведіть в окремому рядку слово "YES", якщо дві вказані вершини лежать в одній компоненті зв'язності, і "NO" у протилежному випадку. Порядок відповідей повинен відповідати порядку операцій ask у вхідних даних.
Приклад 1