10481: DSU-1. Disjoint Set Union
Напишіть програму, для роботи зі структурою даних DSU (Disjoint Set Union) - Система множин, які не перетинаються, і буде обробляти запити таких видів:
RESET N — створити нову серію множин: множина лише з одного елемента 0, множина лише з одного елемента 1, і так далі, до множини лише з одного елемента N-1
Якщо струтура вже містила якісь множини, всі вони знищуються.
Внаслідок роботи цієї команди на екран необхідно вивести два слова через пробіл: RESET DONE
JOIN X Y — об'єднати множини, до яких належать елемент X та елемент Y.
Якщо ці елементи і до цього належали одній множині, вивести слово ALREADY, і після нього через пробіл ті ж самі числа X та Y в такому ж порядку.
Якщо елементи не належали різним множинам, то нічого виводити не потрібно (лише потрібно об'єднати множини цих елементів)
CHECK X Y — перевірити, чи елементи X та Y належать одній множині.
Вивести YES якщо належать одній множині, і NO - якщо належать різним.
Формат вхідних даних
Вводиться послідовність запитів RESET, JOIN та CHECK — кожен в окремому рядку.
Гарантується, що перший рядок містить запит RESET, а загальна кількість запитів RESER не перевищує 5.
Загальна кількість всіх запитів не перевищує 20000.
Значення \(N\) в кожному запиті не перевищує 100000.
В кожному запиті JOIN та в кожному запиті CHECK обидва числа будуть в діапазоні від 0 до N-1, де N - параметр останнього запиту RESET.
Формат вихідних даних
Для запитів RESET, CHECK і тих запитів JOIN, де елементи і так належать одній множині, виведіть відповідний результат запиту.
Приклад вхідних даних
RESET 15
JOIN 14 10
JOIN 13 8
JOIN 0 9
JOIN 8 3
JOIN 4 1
JOIN 10 5
JOIN 8 4
CHECK 2 11
JOIN 4 1
JOIN 2 6
CHECK 9 1
JOIN 6 5
CHECK 10 5
Приклад вихідних даних
RESET DONE
NO
ALREADY 4 1
NO
YES
Примітка
Відповіді NO даються на запити CHECK 2 11 та CHECK 9 1, а відповідь ALREADY 4 1 - на другий з запитів JOIN 4 1 і на CHECK 5 10
Коментарі