#include <bits/stdc++.h>
using namespace std;
vector<int> G[2 * 100000 + 5];
int tree[100005 * 2 * 4 + 5];
int suffix[100005 * 2 * 4 + 5];
int st[100005 * 2 + 5];
void update(int i, int si, int sj, int q, int v) {
  if (si == sj) {
    suffix[i] = tree[i] = v;
  } else {
    int m = (si + sj) / 2;
    if (q <= m)
      update(2 * i, si, m, q, v);
    else
      update(2 * i + 1, m + 1, sj, q, v);
    tree[i] = tree[2 * i] + tree[2 * i + 1];
    suffix[i] = max(suffix[2 * i] + tree[2 * i + 1], suffix[2 * i + 1]);
  }
}
int query(int i, int si, int sj, int q) {
  if (si == sj) return si;
  int m = (si + sj) / 2;
  if (suffix[2 * i + 1] >= q) return query(2 * i + 1, m + 1, sj, q);
  return query(2 * i, si, m, q - tree[2 * i + 1]);
}
int main() {
  int Q, i, c;
  cin >> Q;
  int N = 2 * 100005 + 1;
  for (int i = (1); i <= (100005); ++i) st[i] = -1, update(1, 1, N, i, 1);
  for (int i = (100005 + 1); i <= (N); ++i) update(1, 1, N, i, 0);
  while (Q--) {
    scanf("%d", &i);
    scanf("%d", &c);
    i += 100005;
    if (c == 0) {
      update(1, 1, N, i, -1);
    } else {
      scanf("%d", &st[i]);
      update(1, 1, N, i, 1);
    }
    printf("%d\n", st[query(1, 1, N, 1)]);
  }
}
