Задачі
Декартове дерево
Декартове дерево
Вам задано пари чисел (\textbf{a_i}, \textbf{b_i}), Вам необхідно побудувати декартове дерево, таке що \textbf{i}-та вершина має ключі (\textbf{a_i}, \textbf{b_i}), вершини з ключом \textbf{a_i} утворюють бінарне дерево пошуку, а вершини з ключем \textbf{b_i} утворюють кучу.
\InputFile
У першому рядку записано число \textbf{N} - кількість пар. Далі йде \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{50000}) пар (\textbf{a_i}, \textbf{b_i}). Для усіх пар |\textbf{a_i}|, |\textbf{b_i}| ≤ \textbf{30000}. \textbf{a_i} ≠ \textbf{a_j} та \textbf{b_i} ≠ \textbf{b_j} для усіх \textbf{i} ≠ \textbf{j}.
\OutputFile
Якщо декартове дерево з таким набором ключів побудувати можливо, виведіть у першому рядку \textbf{YES}, у протилежному випадку виведіть \textbf{NO}. В випадку відповіді \textbf{YES}, виведіть \textbf{N} рядків, кожен з яких повинен описувати вершину. Опис вершини складається з трьо чисел: номер предка, номер лівого сина та номер правого сина. Якщо у вершини відсутній предок або який-небудь з синів, то виводьте на його місці число \textbf{0}. Якщо дерев, що підходять, декілька, виведіть довільне.
Вхідні дані #1
7 5 4 2 2 3 9 0 5 1 3 6 6 4 11
Вихідні дані #1
YES 2 3 6 0 5 1 1 0 7 5 0 0 2 4 0 1 0 0 3 0 0