#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;++i)
#define mp make_pair
#define pb push_back
#define rep(i,n) for(int i=1;i<=n;++i)
#define size sze
typedef long long LL;
const int pri[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
int n;
int a[100];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    long long ans=-1;
    for(int i=0;i<(1<<15);i++)
    {
        long long ret=1;
        for(int j=0;j<15;j++)
            if ((1<<j)&i)ret=ret*pri[j];
        int flag=1;
        for(int i=1;i<=n;i++)
            if (__gcd(1ll*a[i],ret)==1)flag=0;
        if (!flag)continue;
        if (ans==-1 || ans>ret)ans=ret;
    }
    cout<<ans<<endl;
    return 0;
}
#include<bits/stdc++.h>
using namespace std;

const int MAX = 200010;
bool is[MAX];

int main(){
  int N;
  cin >> N;
  int ans = 0;
  for(int i=0; i<N; i++){
    int x;
    cin >> x;
    is[x] = true;
    while(is[ans]){
      ans++;
    }
    cout << ans << endl;
  }
}
  