#include //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; typedef long long ll; typedef unsigned long long ull; typedef unsigned int ui; typedef pair pii; typedef pair ppii; typedef pair pipi; typedef pair pll; typedef pair ppll; typedef pair plpl; typedef tuple tl; ll mod=1000000007; ll mod2=998244353; ll mod3=1000003; ll mod4=998244853; ll inf=1LL<<60; long double pi=3.14159265358979323846L; double eps=1e-12; #define rep(i,m,n) for(ll i=m;i=m;i--) #define srep(itr,st) for(auto itr=st.begin();itr!=st.end();itr++) int dh[4]={1,-1,0,0}; int dw[4]={0,0,1,-1}; int ddh[8]={-1,-1,-1,0,0,1,1,1}; int ddw[8]={-1,0,1,-1,1,-1,0,1}; ll gcd(ll a,ll b){ if(a0){ if(k&1)ret*=now; now*=now; k/=2; } return ret; } ll beki(ll n,ll k,ll md){ ll ret=1; ll now=n; while(k>0){ if(k%2==1){ ret*=now; ret%=md; } now*=now; now%=md; k/=2; } return ret; } ll gyaku(ll n,ll md){ return beki(n,md-2,md); }random_device rnd; mt19937 mt(rnd()); int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n;cin>>n; ll a[n]; rep(i,0,n)cin>>a[i]; bool ok[n+1]; fill(ok,ok+n+1,true); ll sum[n+1]; fill(sum,sum+n+1,0); rrep(i,n-1,0){ if(ok[i]==false)continue; if(a[i]==-1){ int now=i; while(true){ ok[now]=false; if(now==0)break; now=(now-1)&i; } } } ll ans=-1; ll num=-1; rrep(i,n-1,0){ if(ok[i]){ ans=a[i]*a[i]; num=i; break; } } if(ans==-1){ cout<<-1< v; rep(i,0,n)if(a[i]>=0)v.push_back(i); uniform_int_distribution ra(0,v.size()-1); map mp; rep(i,0,100000){ int aa=ra(mt); int bb=ra(mt); pii p={aa,bb}; if(mp[p])continue; mp[p]++; int c=aa&bb; if(b[c]>=1e+19)continue; b[c]+=a[aa]*a[bb]; } rep(i,0,n){ if(ok[i]){ if(b[i]>0){ ans=gcd(ans,b[i]); } } } cout<