#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int INF = 2e9;
struct node {
  int l, r, max, max_ind, to_add;
  bool update_flag;
} t[4 * N];
int m;
int nums[N];
void build(int l, int r, int ind) {
  t[ind] = (node){l, r, 0, r, 0, false};
  if (l != r) {
    build(l, (l + r) / 2, ind * 2);
    build((l + r) / 2 + 1, r, ind * 2 + 1);
  }
}
void update(int l, int r, int addend, int ind) {
  int L = t[ind].l;
  int R = t[ind].r;
  if (l <= L && R <= r)
    t[ind].to_add += addend;
  else if (L > r || R < l)
    return;
  else {
    t[ind].update_flag = true;
    update(l, r, addend, ind * 2);
    update(l, r, addend, ind * 2 + 1);
  }
}
int max_query(int l, int r, int ind) {
  int L = t[ind].l;
  int R = t[ind].r;
  if (L > r || R < l) return -INF;
  if (t[ind].update_flag) {
    t[ind * 2].to_add += t[ind].to_add;
    t[ind * 2 + 1].to_add += t[ind].to_add;
    t[ind].to_add = 0;
    int Lmax = max_query(L, (L + R) / 2, ind * 2);
    int Rmax = max_query((L + R) / 2 + 1, R, ind * 2 + 1);
    t[ind].max = max(Lmax, Rmax);
    if (Rmax >= Lmax)
      t[ind].max_ind = t[ind * 2 + 1].max_ind;
    else
      t[ind].max_ind = t[ind * 2].max_ind;
    t[ind].update_flag = false;
  }
  if (l <= L && r >= R) {
    return t[ind].to_add + t[ind].max;
  } else {
    t[ind].max += t[ind].to_add;
    t[ind * 2].to_add += t[ind].to_add;
    t[ind * 2 + 1].to_add += t[ind].to_add;
    t[ind].to_add = 0;
    return max(max_query(l, r, ind * 2), max_query(l, r, ind * 2 + 1));
  }
}
int query() {
  int L = 1, R = m;
  int q = max_query(L, R, 1);
  if (q <= 0) return -1;
  while (L != R) {
    q = max_query((L + R) / 2 + 1, R, 1);
    if (q <= 0) {
      R = (L + R) / 2;
    } else
      L = (L + R) / 2 + 1;
  }
  return L;
}
int main() {
  cin >> m;
  build(1, m, 1);
  for (int i = 0; i < m; i++) {
    int pi, ti;
    cin >> pi >> ti;
    if (ti == 0) {
      update(1, pi, -1, 1);
    } else {
      int x;
      cin >> x;
      nums[pi] = x;
      update(1, pi, 1, 1);
    }
    int ans = query();
    if (ans == -1)
      cout << -1 << endl;
    else
      cout << nums[ans] << endl;
  }
}
