func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1e9 + 7;   const long long MAXN = 2e5 + 7;   long long a[MAXN];   bool good[MAXN];   long long want[MAXN], pref[MAXN], next_[MAXN];   signed main() {     ios_base::sync_with_stdio(false);     cout.precision(40);     long long n;     cin >> n;     for (long long i = 0; i < n; ++i) {       cin >> a[i];     }     stack<long long> st;     for (long long i = 0; i < n; ++i) {       while (st.size() && a[st.top()] < a[i]) {         next_[st.top()] = i;         st.pop();       }       st.push(i);     }     while (st.size()) {       next_[st.top()] = n;       st.pop();     }     long long mx1 = -MOD;     long long mx2 = -MOD;     for (long long i = 0; i < n; ++i) {       if (a[i] < mx1 && a[i] > mx2) {         want[i] = true;       }       if (a[i] > mx1) {         mx2 = mx1;         mx1 = a[i];       } else if (a[i] > mx2) {         mx2 = a[i];       }     }     pref[0] = want[0];     for (long long i = 1; i < n; ++i) {       pref[i] = pref[i - 1] + want[i];     }     long long mx = -MOD;     long long ans = -MOD;     long long best = -1;     for (long long i = 0; i < n; ++i) {       mx = max(mx, a[i]);       if (a[i] != mx) continue;       long long j = next_[i];       long long new_ans = pref[j - 1] - pref[i] - 1;       if (new_ans > ans || (new_ans == ans && a[i] < a[best])) {         ans = new_ans;         best = i;       }     }     mx = -MOD;     for (long long i = 0; i < n; ++i) {       mx = max(mx, a[i]);       if (a[i] == mx) continue;       long long new_ans = 0;       if (new_ans > ans || (new_ans == ans && a[i] < a[best])) {         ans = new_ans;         best = i;       }     }     cout << a[best] <<   n ;     return 0;   }   