func_code_string: #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;   }   