#P2828. Buy Tickets

Buy Tickets

描述

在中国,农历新年期间的火车票非常难买,所以我们必须早起排长队……

春节临近,但不幸的是,小猫仍然四处奔波。现在,他不得不乘火车前往四川省绵阳,参加信息学国家奥林匹克代表队冬季选拔营。

凌晨一点,外面一片漆黑。西北吹来的寒风并没有吓退排队的人们。寒冷的夜晚让小猫打了个寒颤。为什么不找个问题来思考呢?这总比冻死强!

不断有人插队。由于周围太黑,这样的行为甚至不会被插队者旁边的人发现。“如果给队列中的每个人分配一个整数值,并且提供所有关于插队者及其插队后位置的信息,我能否找出队列中人的最终顺序?”小猫想道。

输入

输入包含多个测试用例。每个测试用例由N+1N + 1行组成,其中第一行给出NN1N200,0001 \leq N \leq 200,000)。接下来的NN行按ii的递增顺序(1iN1 \leq i \leq N)给出数值对PosiPos_iValiVal_i。对于每个iiPosiPos_iValiVal_i的范围和含义如下:

  • Posi[0,i1]Pos_i \in [0, i - 1] —— 第ii个人来到队列中,并站在队列中第PosiPos_i个人的后面。售票员被视为第00个人,队列最前面的人被视为第11个人。
  • Vali[0,32767]Val_i \in [0, 32767] —— 第ii个人被分配的值为ValiVal_i

测试用例之间没有空行。输入到文件结束。

输出

对于每个测试用例,输出一行用空格分隔的整数,表示队列中人的值的最终顺序。

输入样例 1

4  
0 77  
1 51  
1 33  
2 69  
4  
0 20523  
1 19243  
1 3890  
0 31492  

输出样例 1

77 33 69 51  
31492 20523 3890 19243  

提示

下图展示了小猫如何根据样例输入的第一个测试用例找出队列的最终顺序。

来源

POJ Monthly--2006.05.28, Zhu, Zeyuan