E. Граф информаций
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В компании «X» работает n сотрудников (для удобства пронумеруем их от 1 до n). Изначально, не было никаких отношений между сотрудниками. В каждый из m следующих дней происходило одно из событий:

  • либо сотрудник y стал начальником сотрудника x (при этом у сотрудника x не было начальника до этого события);
  • либо сотруднику x передают пакет документов и он подписывает их; затем передает их своему начальнику, затем начальник подписывает документы и передает их своему начальнику и так далее (последний человек, подписавший документы, отправляет их в архив);
  • либо приходит запрос вида «определить, подписывался ли сотрудник x на определенных документах».

Ваша задача написать программу, которая по заданным событиям будет отвечать на запросы, описанного вида. При этом гарантируется, что на протяжении всего времени работы компании не было циклических зависимостей.

Входные данные

Первая строка содержит два целых числа n и m (1 ≤ n, m ≤ 105) — количество сотрудников в компании и количество событий.

Каждая из следующих m строк содержит описание одного события (события заданы в хронологическом порядке). Первое число строки обозначает тип события t (1 ≤ t ≤ 3).

  • Если t = 1, далее следуют два целых числа x и y (1 ≤ x, y ≤ n) — номера сотрудников компании, между которыми появились отношения вида подчиненный-начальник. Гарантируется, что сотрудник x на данный момент не имеет начальника.
  • Если t = 2, далее следует целое число x (1 ≤ x ≤ n) — номер сотрудника, который получил очередной пакет документов.
  • Если t = 3, далее следуют два целых числа x и i (1 ≤ x ≤ n; 1 ≤ i ≤ [количество уже переданных пакетов]) — сотрудник и номер пакета документов, про который требуется узнать информацию. Пакеты документов нумеруются, начиная от 1, в хронологическом порядке.

Гарантируется, что во входных данных встречается хотя бы один запрос третьего типа.

Выходные данные

Для каждого запроса третьего типа выведите «YES», если сотрудник подписывал пакет документов, и «NO» в ином случае. Все слова выводите без кавычек.

Примеры
Входные данные
4 9
1 4 3
2 4
3 3 1
1 2 3
2 2
3 1 2
1 3 1
2 2
3 1 3
Выходные данные
YES
NO
YES