#include<bits/stdc++.h>usingnamespace std;#define _rep(i, a, b) for (int i = (a); i <= (b); ++i)#define _rev(i, a, b) for (int i = (a); i >= (b); --i)#define _for(i, a, b) for (int i = (a); i < (b); ++i)#define _rof(i, a, b) for (int i = (a); i > (b); --i)#define oo 0x3f3f3f3f#define ll long long#define db double#define eps 1e-8#define bin(x) cout << bitset<10>(x) << endl;#define what_is(x) cerr << #x << " is " << x << endl;#define met(a, b) memset(a, b, sizeof(a))#define all(x) x.begin(), x.end()#define pii pair<int, int>intnxt(){int ret;scanf("%d",&ret);return ret;}int dp[1<<21][21];constint maxn =1e6+10;int a[maxn];voidupdate(int cur,int k){if(k >20)return;if(dp[cur][k]>1)return;
dp[cur][k]++;update(cur, k+1);if(cur >> k &1)//目前状态的第k位是否是1update(cur^(1<< k), k);//为啥最后一个参数是k}signedmain(){int n =nxt();_rep(i,1, n) a[i]=nxt();int ans =0;_rev(i, n,1){int cur =0, t =0;//cur代表a[i]|(a[k]&a[j]), t 代表 a[k]&a[j]_rev(j,20,0){if(a[i]>> j &1){//如果a[i]的第j位上有1, cur至少得是a[i];
cur |=1<<j;}elseif(dp[t |(1<< j)][20]>1){//如果t|1<<j这种状态存在
cur |=1<< j, t |=1<< j;}}update(a[i],0);//录入a[i], 可能成为以后的a[k]或者a[j]if(i <= n -2){
ans =max(ans, cur);}}
cout << ans << endl;}