#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int n;
int dp[1 << 21][21];
int a[maxn];
void upd(int num, int k) {
  if (k > 20) return;
  if (dp[num][k] > 1) return;
  dp[num][k]++;
  upd(num, k + 1);
  if (num >> k & 1) upd(num ^ (1 << k), k);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  int ans = 0;
  for (int i = n; i >= 1; i--) {
    int res = 0, cnt = 0;
    for (int j = 20; j >= 0; j--) {
      if (a[i] >> j & 1)
        res |= (1 << j);
      else {
        if (dp[cnt | (1 << j)][20] > 1) {
          res |= (1 << j);
          cnt |= (1 << j);
        }
      }
    }
    if (n - i >= 2) ans = max(ans, res);
    upd(a[i], 0);
  }
  printf("%d\n", ans);
  return 0;
}
