Problems
Декартово дерево
Декартово дерево
Вам даны пары чисел (\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}. Если подходящих деревьев несколько, выведите любое.
Input example #1
7 5 4 2 2 3 9 0 5 1 3 6 6 4 11
Output example #1
YES 2 3 6 0 5 1 1 0 7 5 0 0 2 4 0 1 0 0 3 0 0