#include <bits/stdc++.h>
using namespace std;
const long long int INF = (long long int)1e9 + 10;
const long long int INFLL = (long long int)1e18 + 10;
const long double EPS = 1e-12;
const long long int MOD = 1e9 + 7;
template <class T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <class T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
template <class T>
inline T sq(T a) {
  return a * a;
}
long long int in() {
  long long int x;
  scanf("%lld", &x);
  return x;
}
char yuyushiki[1000010];
string stin() {
  scanf("%s", yuyushiki);
  return yuyushiki;
}
struct Starry {
  const long long int ID = INFLL;
  vector<long long int> node;
  vector<long long int> added;
  int size;
  long long int op(long long int a, long long int b) { return min(a, b); }
  void init(int n) {
    size = 1;
    while (size < n) size *= 2;
    node = vector<long long int>(size * 2 - 1, 0);
    added = vector<long long int>(size * 2 - 1, 0);
  }
  void add(int a, int b, long long int x, int k, int l, int r) {
    if (a <= l && r <= b) {
      added[k] += x;
    } else if (b <= l || r <= a) {
      return;
    } else {
      add(a, b, x, k * 2 + 1, l, (l + r) / 2);
      add(a, b, x, k * 2 + 2, (l + r) / 2, r);
      node[k] = op(node[k * 2 + 1] + added[k * 2 + 1],
                   node[k * 2 + 2] + added[k * 2 + 2]);
    }
  }
  void add(int a, int b, long long int x) { add(a, b, x, 0, 0, size); }
  long long int get(int k) { return node[k] + added[k]; }
  long long int query(long long int ad, int k, int l, int r) {
    if (r - l == 1) {
      if (get(k) + ad == -1) {
        return l;
      } else {
        return -1;
      }
    }
    ad += added[k];
    if (get(k * 2 + 1) + ad < 0) {
      return query(ad, k * 2 + 1, l, (l + r) / 2);
    } else {
      return query(ad, k * 2 + 2, (l + r) / 2, r);
    }
  }
  long long int query() { return query(0, 0, 0, size); }
};
Starry seg;
int n;
int a[100010];
int main() {
  n = in();
  seg.init(n);
  for (long long int i = (0); i < (long long int)(n); i++) {
    int pos = n - in();
    int t = in();
    if (t == 0) {
      seg.add(pos, n, 1);
    } else if (t == 1) {
      seg.add(pos, n, -1);
      a[pos] = in();
    } else {
      assert(false);
    }
    int x = seg.query();
    if (x == -1) {
      printf("-1\n");
    } else {
      printf("%d\n", a[x]);
    }
  }
  return 0;
}
