#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
int seg[N][3];
void add(int x, int L, int R, int qx, int t, int value) {
  if (L == R) {
    seg[x][0] = t;
    seg[x][1] = t;
    seg[x][2] = value;
    return;
  }
  int M = (L + R) / 2;
  if (qx <= M) {
    add(x * 2, L, M, qx, t, value);
  } else {
    add(x * 2 + 1, M + 1, R, qx, t, value);
  }
  seg[x][0] = seg[x * 2][0] + seg[x * 2 + 1][0];
  seg[x][1] = max(seg[x * 2][1] + seg[x * 2 + 1][0], seg[x * 2 + 1][1]);
}
int query(int x, int L, int R, int offset = 0) {
  if (L == R) return seg[x][2];
  if (seg[x][1] <= offset) return -1;
  int M = (L + R) / 2;
  if (seg[x * 2 + 1][1] > offset) return query(x * 2 + 1, M + 1, R, offset);
  if (seg[x * 2][1] > offset - seg[x * 2 + 1][0])
    return query(x * 2, L, M, offset - seg[x * 2 + 1][0]);
  fprintf(stderr, "HERE!\n");
  return -1;
}
int main(void) {
  int m;
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    int p, t, x = -1;
    scanf("%d%d", &p, &t);
    if (t == 1) scanf("%d", &x);
    if (t == 0) t = -1;
    add(1, 1, m, p, t, x);
    int ans = query(1, 1, m, 0);
    printf("%d\n", ans);
  }
  return 0;
}
