func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 1e9 + 7;   long long min(long long a, long long b) { return (a < b) ? a : b; }   long long max(long long a, long long b) { return (a > b) ? a : b; }   long long fp(long long a, long long b) {     if (b == 0) return 1;     long long x = fp(a, b / 2);     x = (x * x) % mod;     if (b & 1) x = (x * a) % mod;     return x;   }   const long long N = 2000;   long long bit[4 * N];   void update(long long id, long long l, long long r, long long point,               long long val) {     if (point < l || point > r) return;     if (l == r) {       bit[id] += val;       return;     }     long long mid = (l + r) / 2;     update(2 * id, l, mid, point, val);     update(2 * id + 1, mid + 1, r, point, val);     bit[id] = bit[2 * id] + bit[2 * id + 1];   }   long long get(long long id, long long l, long long r, long long point) {     if (point < l) {       return 0;     }     if (r <= point) {       return bit[id];     }     long long mid = (l + r) / 2;     return get(2 * id, l, mid, point) + get(2 * id + 1, mid + 1, r, point);   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     long long n;     cin >> n;     long long a[n + 1];     for (long long i = 1; i <= n; i++) {       cin >> a[i];     }     map<long long, vector<array<long long, 2>>> mp;     for (long long i = 1; i <= n; i++) {       long long sm = 0;       for (long long j = i; j <= n; j++) {         sm += a[j];         mp[sm].push_back({i, j});       }     }     vector<array<long long, 2>> ans;     for (auto i : mp) {       vector<array<long long, 2>> tmp;       sort(i.second.begin(), i.second.end());       for (long long j = 0; j < i.second.size(); j++) {         update(1, 1, n, i.second[j][1], 1);       }       long long st = 1;       for (long long j = 0; j < i.second.size(); j++) {         update(1, 1, n, i.second[j][1], -1);         if (i.second[j][0] < st) continue;         if (i.second[j][0] == i.second[j][1]) {           tmp.push_back(i.second[j]);           st = i.second[j][1] + 1;         } else {           long long x =               get(1, 1, n, i.second[j][1] - 1) - get(1, 1, n, i.second[j][0]);           if (x > 0) {             continue;           } else {             tmp.push_back(i.second[j]);             st = i.second[j][1] + 1;           }         }       }       if (tmp.size() > ans.size()) ans = tmp;     }     cout << ans.size() <<   n ;     for (auto i : ans) cout << i[0] <<     << i[1] <<   n ;   }   