燦率建立了一棵二元搜尋樹,樹上有 $N$ 個節點,每個節點上都標有一個整數。二元搜尋樹是一棵二元樹,滿足對於每個節點 $i$,$i$ 的左子孫節點上的數值都小於 $i$ 上的數值,而 $i$ 的右子孫節點上的數值都大於 $i$ 上的數值。
燦率記錄了所有 $i$ 的資料:二元搜尋樹中第 $i$ 個節點的深度 $H_i$,以及第 $i$ 個節點上的整數 $A_i$。這裡 $A_i$ 兩兩相異,且根節點的深度為 $1$。($1 \le i \le N$)
燦率在參加 ICPC World Finals 期間弄丟了這棵二元搜尋樹。請利用先前記錄的資訊,為燦率重建這棵二元搜尋樹。
輸入格式
第一行給定節點個數 $N$。($1 \leq N \leq 200\,000$)
接下來 $N$ 行,每行給定一個節點的資訊。對於所有 $1 \leq i \leq N$,第 $(i+1)$ 行包含第 $i$ 個節點上的整數 $A_i$ 以及第 $i$ 個節點的深度 $H_i$,以空格分隔。($-2\cdot 10^9\leq A_i \leq 2\cdot 10^9$;$1 \leq H_i \leq N$) 所有 $A_i$ 兩兩相異。
輸出格式
若無法根據給定記錄重建二元搜尋樹,則輸出 $-1$。
若可以重建,則輸出 $N$ 行,表示樹的結構。
第 $i$ 行輸出第 $i$ 個節點的左子節點與右子節點的節點編號。若沒有子節點,則輸出 $-1$ 作為子節點編號。
若存在多種可能的樹,輸出任意一種即可。
範例
輸入 1
3 1 2 2 1 3 2
輸出 1
-1 -1 1 3 -1 -1
輸入 2
3 1 1 2 2 3 2
輸出 2
-1
輸入 3
3 2 2 5 3 4 2
輸出 3
-1
輸入 4
3 100 2 200 1 300 2
輸出 4
-1 -1 1 3 -1 -1