#include <bits/stdc++.h>
using namespace std;
const int L = 21;
const int N = 1 << L;
int n, ans, a[N], best[N][3];
void add(int mask, int value) {
  auto &b = best[mask];
  b[2] = value;
  if (b[2] > b[1]) swap(b[2], b[1]);
  if (b[1] > b[0]) swap(b[1], b[0]);
}
bool possible() {
  for (int i = 0; i < (int)(n); i++) {
    auto target = ans & ~a[i];
    auto &b = best[target];
    if (b[0] > i && b[1] > i) return true;
  }
  return false;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  memset(best, -1, sizeof best);
  cin >> n;
  for (int i = 0; i < (int)(n); i++) {
    cin >> a[i];
    add(a[i], i);
  }
  for (int bit = 0; bit < (int)(L); bit++)
    for (int mask = 0; mask < (int)(N); mask++)
      if ((mask >> bit) & 1) {
        add(mask - (1 << bit), best[mask][0]);
        add(mask - (1 << bit), best[mask][1]);
      }
  for (int bit = (int)(L)-1; bit >= ((int)0); bit--) {
    ans |= 1 << bit;
    if (!possible()) ans -= 1 << bit;
  }
  cout << ans;
  return 0;
}
