#include <bits/stdc++.h>
using namespace std;
const int MX = 1e5 + 5;
const int INF = 0x3f3f3f3f;
int n, A[MX];
int col[MX << 2], MAX[MX << 2];
void push_up(int rt) { MAX[rt] = max(MAX[rt << 1], MAX[rt << 1 | 1]); }
void updone(int rt, int c) {
  MAX[rt] += c;
  col[rt] += c;
}
void push_down(int rt) {
  if (col[rt]) {
    updone(rt << 1, col[rt]);
    updone(rt << 1 | 1, col[rt]);
    col[rt] = 0;
  }
}
void update(int L, int R, int d, int l, int r, int rt) {
  if (L <= l && r <= R) {
    updone(rt, d);
    return;
  }
  int m = (l + r) >> 1;
  push_down(rt);
  if (L <= m) update(L, R, d, l, m, rt << 1);
  if (R > m) update(L, R, d, m + 1, r, rt << 1 | 1);
  push_up(rt);
}
int query(int l, int r, int rt) {
  if (l == r) {
    return l;
  }
  int m = (l + r) >> 1;
  push_down(rt);
  if (MAX[rt << 1 | 1] >= 1) return query(m + 1, r, rt << 1 | 1);
  return query(l, m, rt << 1);
}
int main() {
  scanf("%d", &n);
  for (int t = 1; t <= n; t++) {
    int pi, ti, xi;
    scanf("%d%d", &pi, &ti);
    if (ti == 1) {
      scanf("%d", &xi);
      A[pi] = xi;
      update(1, pi, 1, 1, n, 1);
    } else {
      update(1, pi, -1, 1, n, 1);
    }
    if (MAX[1] < 1)
      printf("-1\n");
    else {
      int p = query(1, n, 1);
      printf("%d\n", A[p]);
    }
  }
  return 0;
}
