#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e6 + 233;
pair<int, int> f[maxn];
int a[maxn];
inline void update(pair<int, int>& t, int v) {
  if (v > t.first)
    t = make_pair(v, t.first);
  else if (v > t.second)
    t = make_pair(t.first, v);
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i <= (1 << 21); i++) f[i] = make_pair(0, 0);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    update(f[a[i]], i);
  }
  for (int k = 0; k < 21; k++)
    for (int i = (1 << 21) - 1; i; i--) {
      if (i & (1 << k)) {
        int j = i ^ (1 << k);
        update(f[j], f[i].first);
        update(f[j], f[i].second);
      }
    }
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    int cur = 0;
    for (int k = 20; k >= 0; k--) {
      if (((a[i] & (1 << k)) == 0) && f[cur | (1 << k)].second > i)
        cur |= 1 << k;
    }
    if (f[cur].second > i) ans = max(ans, a[i] | cur);
  }
  printf("%d\n", ans);
  return 0;
}
