#include <ctime>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
inline int read()
{
int x = 0; int v = 1, c;
while(c = getchar(), c < '0' || c > '9') if(c == '-') v = -1;
for(; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0';
return x * v;
}
template<typename T> inline void write(T x, int ch = 10)
{
static int s[20]; int t = 0;
if(x < 0) x = -x, putchar('-');
if(x == 0) putchar('0');
for(s[t++] = ch; x; x /= 10)
s[t++] = x % 10 + '0';
while(t--) putchar(s[t]);
}
const int maxn = 200005;
struct Node *null;
struct Node
{
Node *fa, *c[2];
int val, sz;
inline void init(int vv = 0) {
fa = c[0] = c[1] = null; sz = 0; val = vv;
}
inline bool ch() {
return fa->c[1] == this;
}
inline void maintain() {
sz = c[0]->sz + c[1]->sz + 1;
}
inline void setc(Node *o, bool kind) {
o->fa = this; c[kind] = o;
}
inline void rotate(Node *&rt) {
Node *x = fa, *y = x->fa; int d = ch();
if(x == rt) fa = y, rt = this; else y->setc(this, x->ch());
x->setc(c[d^1], d); setc(x, d^1);
x->maintain(); maintain();
}
inline void splay(Node *&rt) {
for(; this != rt; rotate(rt)) {
if(fa == rt) continue;
if(ch() ^ fa->ch()) rotate(rt);
else fa->rotate(rt);
}
}
inline Node* find(int pos) {
Node *x = this;
while(x != null && pos) {
int s = x->c[0]->sz + 1;
if(pos == s) return x;
else if(pos < s) x = x->c[0];
else pos -= s, x = x->c[1];
}
return NULL;
}
void dfs() {
if(c[0] != null) c[0]->dfs();
if(val != -1) write(val, ' ');
if(c[1] != null) c[1]->dfs();
}
}nodes[maxn], *root;
int n, cur;
inline Node* addnode(int val)
{
Node *x = nodes + (++cur);
x->init(val);
x->sz = 1;
return x;
}
void init()
{
// clear the splay
cur = 0;
null = nodes;
null->init();
root = addnode(-1);
root->setc(addnode(-1), 1);
root->maintain();
}
void work()
{
for(int i = 1; i <= n; ++i)
{
int pos = read();
Node *x = root->find(pos + 1);
Node *y = root->find(pos + 2);
x->splay(root);
y->splay(x->c[1]);
y->setc(addnode(read()), 0);
y->maintain(), x->maintain();
}
root->dfs(); puts("");
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
while(scanf("%d", &n) == 1) {
init();
work();
}
#ifndef ONLINE_JUDGE
fclose(stdin), fclose(stdout);
printf("Run Time: %.3fs\n", (double)clock() / CLOCKS_PER_SEC);
#endif
return 0;
}
I2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgTEw7CgppbmxpbmUgaW50IHJlYWQoKQp7CglpbnQgeCA9IDA7IGludCB2ID0gMSwgYzsKCXdoaWxlKGMgPSBnZXRjaGFyKCksIGMgPCAnMCcgfHwgYyA+ICc5JykgaWYoYyA9PSAnLScpIHYgPSAtMTsKCWZvcig7IGMgPj0gJzAnICYmIGMgPD0gJzknOyBjID0gZ2V0Y2hhcigpKSB4ID0geCAqIDEwICsgYyAtICcwJzsKCXJldHVybiB4ICogdjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd3JpdGUoVCB4LCBpbnQgY2ggPSAxMCkKewoJc3RhdGljIGludCBzWzIwXTsgaW50IHQgPSAwOwoJaWYoeCA8IDApIHggPSAteCwgcHV0Y2hhcignLScpOwoJaWYoeCA9PSAwKSBwdXRjaGFyKCcwJyk7Cglmb3Ioc1t0KytdID0gY2g7IHg7IHggLz0gMTApCgkJc1t0KytdID0geCAlIDEwICsgJzAnOwoJd2hpbGUodC0tKSBwdXRjaGFyKHNbdF0pOwp9Cgpjb25zdCBpbnQgbWF4biA9IDIwMDAwNTsKCnN0cnVjdCBOb2RlICpudWxsOwpzdHJ1Y3QgTm9kZQp7CglOb2RlICpmYSwgKmNbMl07CglpbnQgdmFsLCBzejsKCglpbmxpbmUgdm9pZCBpbml0KGludCB2diA9IDApIHsKCQlmYSA9IGNbMF0gPSBjWzFdID0gbnVsbDsgc3ogPSAwOyB2YWwgPSB2djsKCX0KCglpbmxpbmUgYm9vbCBjaCgpIHsKCQlyZXR1cm4gZmEtPmNbMV0gPT0gdGhpczsKCX0KCglpbmxpbmUgdm9pZCBtYWludGFpbigpIHsKCQlzeiA9IGNbMF0tPnN6ICsgY1sxXS0+c3ogKyAxOwoJfQoJCglpbmxpbmUgdm9pZCBzZXRjKE5vZGUgKm8sIGJvb2wga2luZCkgewoJCW8tPmZhID0gdGhpczsgY1traW5kXSA9IG87Cgl9CgoJaW5saW5lIHZvaWQgcm90YXRlKE5vZGUgKiZydCkgewoJCU5vZGUgKnggPSBmYSwgKnkgPSB4LT5mYTsgaW50IGQgPSBjaCgpOwoJCWlmKHggPT0gcnQpIGZhID0geSwgcnQgPSB0aGlzOyBlbHNlIHktPnNldGModGhpcywgeC0+Y2goKSk7CgkJeC0+c2V0YyhjW2ReMV0sIGQpOyBzZXRjKHgsIGReMSk7CgkJeC0+bWFpbnRhaW4oKTsgbWFpbnRhaW4oKTsKCX0KCglpbmxpbmUgdm9pZCBzcGxheShOb2RlIComcnQpIHsKCQlmb3IoOyB0aGlzICE9IHJ0OyByb3RhdGUocnQpKSB7CgkJCWlmKGZhID09IHJ0KSBjb250aW51ZTsKCQkJaWYoY2goKSBeIGZhLT5jaCgpKSByb3RhdGUocnQpOwoJCQllbHNlIGZhLT5yb3RhdGUocnQpOwoJCX0KCX0KCglpbmxpbmUgTm9kZSogZmluZChpbnQgcG9zKSB7CgkJTm9kZSAqeCA9IHRoaXM7CgkJd2hpbGUoeCAhPSBudWxsICYmIHBvcykgewoJCQlpbnQgcyA9IHgtPmNbMF0tPnN6ICsgMTsKCQkJaWYocG9zID09IHMpIHJldHVybiB4OwoJCQllbHNlIGlmKHBvcyA8IHMpIHggPSB4LT5jWzBdOwoJCQllbHNlIHBvcyAtPSBzLCB4ID0geC0+Y1sxXTsKCQl9CgkJcmV0dXJuIE5VTEw7Cgl9CgoJdm9pZCBkZnMoKSB7CgkJaWYoY1swXSAhPSBudWxsKSBjWzBdLT5kZnMoKTsKCQlpZih2YWwgIT0gLTEpIHdyaXRlKHZhbCwgJyAnKTsKCQlpZihjWzFdICE9IG51bGwpIGNbMV0tPmRmcygpOwoJfQp9bm9kZXNbbWF4bl0sICpyb290OwoKaW50IG4sIGN1cjsKCmlubGluZSBOb2RlKiBhZGRub2RlKGludCB2YWwpCnsKCU5vZGUgKnggPSBub2RlcyArICgrK2N1cik7Cgl4LT5pbml0KHZhbCk7Cgl4LT5zeiA9IDE7CglyZXR1cm4geDsKfQoKdm9pZCBpbml0KCkKewoJLy8gY2xlYXIgdGhlIHNwbGF5CgljdXIgPSAwOwoJbnVsbCA9IG5vZGVzOwoJbnVsbC0+aW5pdCgpOwoJcm9vdCA9IGFkZG5vZGUoLTEpOwoJcm9vdC0+c2V0YyhhZGRub2RlKC0xKSwgMSk7Cglyb290LT5tYWludGFpbigpOwp9Cgp2b2lkIHdvcmsoKQp7Cglmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKCXsKCQlpbnQgcG9zID0gcmVhZCgpOwoJCU5vZGUgKnggPSByb290LT5maW5kKHBvcyArIDEpOwoJCU5vZGUgKnkgPSByb290LT5maW5kKHBvcyArIDIpOwoJCXgtPnNwbGF5KHJvb3QpOwoJCXktPnNwbGF5KHgtPmNbMV0pOwoJCXktPnNldGMoYWRkbm9kZShyZWFkKCkpLCAwKTsKCQl5LT5tYWludGFpbigpLCB4LT5tYWludGFpbigpOwoJfQoJcm9vdC0+ZGZzKCk7IHB1dHMoIiIpOwp9CgppbnQgbWFpbigpCnsKI2lmbmRlZiBPTkxJTkVfSlVER0UKCWZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwoJZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCgkKCXdoaWxlKHNjYW5mKCIlZCIsICZuKSA9PSAxKSB7CgkJaW5pdCgpOwoJCXdvcmsoKTsKCX0KCQojaWZuZGVmIE9OTElORV9KVURHRQoJZmNsb3NlKHN0ZGluKSwgZmNsb3NlKHN0ZG91dCk7CglwcmludGYoIlJ1biBUaW1lOiAlLjNmc1xuIiwgKGRvdWJsZSljbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMpOwojZW5kaWYKCXJldHVybiAwOwp9