#include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll INF=1LL<<60; typedef pair P; typedef pair PP; const ll MOD=998244353; const double PI=acos(-1); void printbit(int n){ if(n==0) cout<<"0"< c; while(n>0){ c.push_back(n%2); n/=2; } reverse(c.begin(),c.end()); for(int v:c){ cout<0){ cnt++; x/=2; } return cnt; } int main(){ int N; cin>>N; vector A(N); for(int i=0;i>A[i]; } if(N>=15){ //鳩ノ巣原理 //A[i]のどれかはbit1が立っているので 1を15個連続して立たせることが可能 int ans=(1<<16)-1; cout< memo; auto dfs=[&](auto f,int idx,int num)->int{ if(memo.count(make_pair(idx,num))) return memo[make_pair(idx,num)]; if(idx==N){ //ans=max(ans,num); //return ans; return num; } int res=0; for(int c=0;c<15;c++){ res=max(res,f(f,idx+1,num|A[idx])); A[idx]=shift(A[idx]); } return memo[make_pair(idx,num)]=res; }; ans=dfs(dfs,0,0); cout<