题目链接 https://www.luogu.com.cn/problem/U486952
#include <stdio.h>
#define N 1000100
int a[N], n;
char *p1,*p2,buf[50010];
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,50008,stdin),p1==p2)?EOF:*p1++)
int read(){
int x=0;
char c=gc();
while(c<48)c=gc();
while(c>47)x=(x<<3)+(x<<1)+(c^48),c=gc();
return x;
}
int box[N];
unsigned seed = 203364;
signed main() {
n = read();
for (int i = 1; i <= n; ++i)
++box[read()];
int idx = 0;
for (int i = N - 1; i; --i)
for (int j = 0; j < box[i]; ++j)
a[++idx] = i;
int mx = 0;
for (int i = 1; i <= 1; ++i)
for (int j = 1; j <= n; ++j)
if ((a[i] | a[j]) > mx)
mx = a[i] | a[j];
printf("%d", mx);
}