#include <bits/stdc++.h>
using namespace std;
const int N = 500002;
const int inf = 0x3f3f3f3f;
int tag1[N << 3], tag2[N << 3], Max[N << 3], Min[N << 3], n, ax;
void build1(int k, int l, int r) {
  if (l == r) {
    Max[k] = l;
    return;
  }
  build1(k << 1, l, ((l + r) >> 1));
  build1(k << 1 | 1, ((l + r) >> 1) + 1, r);
  Max[k] = max(Max[k << 1], Max[k << 1 | 1]);
}
void build2(int k, int l, int r) {
  if (l == r) {
    Min[k] = l;
    return;
  }
  build2(k << 1, l, ((l + r) >> 1));
  build2(k << 1 | 1, ((l + r) >> 1) + 1, r);
  Min[k] = min(Min[k << 1], Min[k << 1 | 1]);
}
void down1(int k) {
  if (tag1[k]) {
    tag1[k << 1] += tag1[k], tag1[k << 1 | 1] += tag1[k];
    Max[k << 1] += tag1[k], Max[k << 1 | 1] += tag1[k];
    tag1[k] = 0;
  }
}
void down2(int k) {
  if (tag2[k]) {
    tag2[k << 1] += tag2[k], tag2[k << 1 | 1] += tag2[k];
    Min[k << 1] += tag2[k], Min[k << 1 | 1] += tag2[k];
    tag2[k] = 0;
  }
}
void add1(int k, int l, int r, int x) {
  if (x <= l) {
    tag1[k]++;
    Max[k]++;
    return;
  }
  down1(k);
  if (x <= ((l + r) >> 1)) add1(k << 1, l, ((l + r) >> 1), x);
  add1(k << 1 | 1, ((l + r) >> 1) + 1, r, x);
  Max[k] = max(Max[k << 1], Max[k << 1 | 1]);
}
void add2(int k, int l, int r, int x) {
  if (r <= x) {
    tag2[k]++;
    Min[k]++;
    return;
  }
  down2(k);
  if (x > ((l + r) >> 1)) add2(k << 1 | 1, ((l + r) >> 1) + 1, r, x);
  add2(k << 1, l, ((l + r) >> 1), x);
  Min[k] = min(Min[k << 1], Min[k << 1 | 1]);
}
int qry1(int k, int l, int r) {
  if (l == r) return l;
  down1(k);
  if (Max[k << 1] >= 0)
    return qry1(k << 1, l, ((l + r) >> 1));
  else
    return qry1(k << 1 | 1, ((l + r) >> 1) + 1, r);
}
int qry2(int k, int l, int r, int x) {
  if (x <= l) return Min[k];
  down2(k);
  int res = inf;
  if (x <= ((l + r) >> 1)) res = min(res, qry2(k << 1, l, ((l + r) >> 1), x));
  res = min(res, qry2(k << 1 | 1, ((l + r) >> 1) + 1, r, x));
  return res;
}
int main() {
  build1(1, -N, 0);
  build2(1, -N, N);
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &ax);
    if (ax < 0) add1(1, -N, 0, ax);
    add2(1, -N, N, ax - 1);
    int l = qry1(1, -N, 0);
    printf("%d\n", qry2(1, -N, N, l));
  }
  return 0;
}
