#include <bits/stdc++.h>
#pragma comment(linker, ”/ STACK : 38777216“
using namespace std;
const int N = 100005;
const int inf = 1000 * 1000 * 1000;
const int mod = 1000 * 1000 * 1000 + 7;
int n;
int answ[N];
int t[4 * N], d[4 * N];
void push(int v, int s, int e) {
  if (d[v] == 0) return;
  t[v] += d[v];
  if (s != e) {
    d[2 * v] += d[v];
    d[2 * v + 1] += d[v];
  }
  d[v] = 0;
}
void update(int v, int s, int e, int l, int r, int val) {
  push(v, s, e);
  if (l > r) return;
  if (s == l && e == r) {
    d[v] += val;
    push(v, s, e);
    return;
  }
  int m = (s + e) / 2;
  update(2 * v, s, m, l, min(r, m), val);
  update(2 * v + 1, m + 1, e, max(m + 1, l), r, val);
  t[v] = max(t[2 * v + 1], t[2 * v]);
}
int query(int v, int s, int e) {
  push(v, s, e);
  if (s == e) return s;
  int m = (s + e) / 2;
  push(2 * v, s, m);
  push(2 * v + 1, m + 1, e);
  if (t[2 * v + 1] > 0) return query(2 * v + 1, m + 1, e);
  return query(2 * v, s, m);
}
int main() {
  scanf("%d", &n);
  answ[0] = -1;
  for (int i = 1; i <= n; i++) {
    int p, a;
    scanf("%d%d", &p, &a);
    if (a == 1) {
      int b;
      scanf("%d", &b);
      answ[p] = b;
      update(1, 1, n, 1, p, 1);
    } else
      update(1, 1, n, 1, p, -1);
    push(1, 1, n);
    if (t[1] <= 0)
      printf("-1\n");
    else {
      int ind = query(1, 1, n);
      printf("%d\n", answ[ind]);
    }
  }
  return 0;
}
