func_code_string: #include <bits/stdc++.h>   const long long mod = (long long)1e9 + 7;   const int maxn = (int)4e5 + 2;   long long inf = 1LL << 60;   const double eps = 1e-9;   using namespace std;   template <class N>   inline void read(N &n) {     N x = 0, f = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = 10 * x + ch -  0 ;       ch = getchar();     }     n = x * f;   }   long long a[2001], b[2001];   int main() {     ios_base::sync_with_stdio(0);     int n, m;     cin >> n;     long long s1 = 0, s2 = 0;     for (int i = 0; i < n; i++) {       cin >> a[i];       s1 += a[i];     }     cin >> m;     for (int i = 0; i < m; i++) {       cin >> b[i];       s2 += b[i];     }     long long diff = abs(s1 - s2);     pair<int, int> ans1 = {-1, -1};     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         long long bs = s2 - b[j] + a[i];         long long as = s1 - a[i] + b[j];         if (diff > abs(as - bs)) {           diff = abs(as - bs);           ans1 = {i, j};         }       }     }     map<long long, pair<int, int> > mpa, mpb;     for (int i = 0; i < n; i++) {       for (int j = i + 1; j < n; j++) {         mpa[a[i] + a[j]] = {i, j};       }     }     long long diff1 = inf;     pair<int, int> ans[2];     for (int i = 0; i < m; i++) {       for (int j = i + 1; j < m; j++) {         long long d = b[i] + b[j];         auto it1 = mpa.lower_bound((s1 - s2 + 2 * d) / 2);         if (it1 != mpa.begin()) it1--;         int jj = 0;         while (it1 != mpa.end() && jj <= 2) {           long long diff2 = abs((s1 - it1->first + d) - (s2 - d + it1->first));           if (diff1 > diff2) {             diff1 = diff2;             ans[1] = {i, j};             ans[0] = it1->second;           }           jj++;           it1++;         }       }     }     if (diff1 < diff) {       cout << diff1 << endl;       cout << 2 << endl;       cout << ans[0].first + 1 <<     << ans[1].first + 1 << endl;       cout << ans[0].second + 1 <<     << ans[1].second + 1 << endl;     } else {       cout << diff << endl;       if (ans1.first == -1)         cout << 0;       else {         cout << 1 << endl;         cout << ans1.first + 1 <<     << ans1.second + 1;       }     }     return 0;   }   