#include <bits/stdc++.h>
using namespace std;
const int MXN = 1e6 + 30;
const int MAXN = 1e3 + 123;
const long long INF = 1e9 + 7;
const long long BINF = 1e15;
const int MOD = 1e9 + 7;
const long double EPS = 1e-9;
long long n;
long long a[MXN];
long long pos;
long long ch;
long long x;
long long t[MXN * 4], to[MXN * 4];
void Push(long long v) {
  to[v * 2] += to[v];
  to[v * 2 + 1] += to[v];
  t[v * 2] += to[v];
  t[v * 2 + 1] += to[v];
  to[v] = 0;
}
void upd(long long v, long long tl, long long tr, long long l, long long r,
         long long x) {
  if (l > r) return;
  Push(v);
  if (l == tl && r == tr) {
    t[v] += x;
    to[v] += x;
  } else {
    long long tm = (tl + tr) / 2;
    upd(v * 2, tl, tm, l, min(r, tm), x);
    upd(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r, x);
    t[v] = max(t[v * 2], t[v * 2 + 1]);
  }
}
long long get(long long v, long long tl, long long tr) {
  Push(v);
  if (tl == tr) {
    return a[tl];
  }
  int tm = (tl + tr) / 2;
  if (t[v * 2 + 1] > 0) {
    return get(v * 2 + 1, tm + 1, tr);
  }
  if (t[v * 2] > 0) {
    return get(v * 2, tl, tm);
  }
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> pos >> ch;
    if (ch) {
      cin >> x;
      a[pos] = x;
      upd(1, 1, n, 1, pos, 1);
    } else {
      upd(1, 1, n, 1, pos, -1);
    }
    if (t[1] <= 0) {
      cout << -1 << '\n';
    } else {
      cout << get(1, 1, n) << '\n';
    }
  }
  return 0;
}
