#include <bits/stdc++.h>
using namespace std;
vector<int> a;
int build(int l, int r, int x) {
  if (l == r) return a[x] = 0;
  int c = (l + r) / 2;
  int sum = build(l, c, x * 2 + 1);
  sum += build(c + 1, r, x * 2 + 2);
  return a[x] = sum;
}
int sum(int tl, int tr, int l, int r, int x) {
  if (tl > tr) return 0;
  if (tl == l && tr == r) return a[x];
  int c = (l + r) / 2;
  return sum(tl, (((c) < (tr)) ? (c) : (tr)), l, c, x * 2 + 1) +
         sum((((c + 1) > (tl)) ? (c + 1) : (tl)), tr, c + 1, r, x * 2 + 2);
}
void add(int l, int r, int n, int x) {
  a[x]++;
  if (l == r) return;
  int c = (l + r) / 2;
  if (n <= c)
    add(l, c, n, x * 2 + 1);
  else
    add(c + 1, r, n, x * 2 + 2);
}
int main() {
  int n;
  scanf("%d", &n);
  a.resize(4 * n);
  build(0, n - 1, 0);
  printf("1 ");
  set<int> max;
  for (int i = 0; i <= n; i++) {
    max.insert(-i);
  }
  for (int i = 0; i < n; i++) {
    int b;
    scanf("%d", &b);
    max.erase(-b);
    add(0, n - 1, b - 1, 0);
    printf("%d ", sum(0, -*max.begin() - 1, 0, n - 1, 0) + 1);
  }
  return 0;
}
