#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
using namespace std;
int a, b, c, d, n, m, k;
pair<int, int> tr[(1 << 19) + 1];
int num[100002];
void upd(int l, int r, int first, int v) {
  if (l == r - 1) {
    if (num[l] == -1) {
      tr[v] = make_pair(0, 1);
    } else {
      tr[v] = make_pair(1, 0);
    }
    return;
  }
  int xx = (r + l) / 2;
  if (first < xx)
    upd(l, xx, first, v * 2);
  else
    upd(xx, r, first, v * 2 + 1);
  tr[v].first =
      tr[v * 2 + 1].first + max(0, tr[v * 2].first - tr[v * 2 + 1].second);
  tr[v].second =
      tr[v * 2].second + max(0, tr[v * 2 + 1].second - tr[v * 2].first);
}
int fnd(int l, int r, int v, int p) {
  if (l == r - 1) {
    if (p + tr[v].second >= tr[v].first) return -1;
    return num[l];
  }
  int xx = (r + l) / 2;
  if (tr[v * 2 + 1].first > p) {
    return fnd(xx, r, v * 2 + 1, p);
  } else {
    p -= tr[v * 2 + 1].first;
    p += tr[v * 2 + 1].second;
    return fnd(l, xx, v * 2, p);
  }
}
int main() {
  scanf("%d", &m);
  for (int _n((m)-1), i(0); i <= _n; i++) {
    if (i == 3) {
      i = i;
    }
    scanf("%d%d", &a, &b);
    --a;
    if (b == 1) {
      scanf("%d", &c);
      num[a] = c;
      upd(0, m, a, 1);
    } else {
      num[a] = -1;
      upd(0, m, a, 1);
    }
    int ans = fnd(0, m, 1, 0);
    printf("%d\n", ans);
  }
}
