func_code_string: #include <bits/stdc++.h>   const int MAXN = 2000 + 5;   long long mn = 1e18;   int ans[3][2], k = -1;   int n, m;   long long a[MAXN], b[MAXN];   inline long long mabs(long long x) { return x < 0 ? -x : x; }   int main() {     scanf( %d , &n);     long long s1 = 0, s2 = 0;     for (int i = 1; i <= n; ++i) scanf( %lld , a + i), s1 += a[i];     scanf( %d , &m);     for (int i = 1; i <= m; ++i) scanf( %lld , b + i), s2 += b[i];     mn = mabs(s1 - s2);     k = 0;     for (int i = 1; i <= n; ++i) {       for (int j = 1; j <= m; ++j) {         if (mn > mabs(s1 - s2 - 2 * a[i] + 2 * b[j])) {           mn = mabs(s1 - s2 - 2 * a[i] + 2 * b[j]);           k = 1;           ans[1][0] = i;           ans[1][1] = j;         }       }     }     std::vector<long long> S1, S2;     long long t1 = -1, t2 = -1;     for (int i = 1; i <= n; ++i)       for (int j = i + 1; j <= n; ++j) S1.push_back(2ll * (a[i] + a[j]));     for (int i = 1; i <= m; ++i)       for (int j = i + 1; j <= m; ++j) S2.push_back(2ll * (b[i] + b[j]));     std::sort(S1.begin(), S1.end());     std::sort(S2.begin(), S2.end());     for (auto x : S1) {       long long now = s1 - s2 - x;       auto p = std::upper_bound(S2.begin(), S2.end(), -now);       if (p != S2.end()) {         if (mn > mabs(now + *p)) {           mn = mabs(now + *p);           t1 = x;           t2 = *p;           k = 2;         }       }       if (p != S2.begin()) {         --p;         if (mn > mabs(now + *p)) {           mn = mabs(now + *p);           t1 = x;           t2 = *p;           k = 2;         }       }     }     if (k == 2) {       for (int i = 1; i <= n; ++i)         for (int j = i + 1; j <= n; ++j)           if (2ll * (a[i] + a[j]) == t1) {             ans[1][0] = i;             ans[2][0] = j;             break;           }       for (int i = 1; i <= m; ++i)         for (int j = i + 1; j <= m; ++j)           if (2ll * (b[i] + b[j]) == t2) {             ans[1][1] = i;             ans[2][1] = j;             break;           }     }     printf( %lld n%d n , mn, k);     for (int i = 1; i <= k; ++i) {       printf( %d %d n , ans[i][0], ans[i][1]);     }     auto chk = [&]() {       for (int i = 1; i <= k; ++i) std::swap(a[ans[i][0]], b[ans[i][1]]);       long long sm0 = 0, sm1 = 0;       for (int i = 1; i <= n; ++i) sm0 += a[i];       for (int i = 1; i <= m; ++i) sm1 += b[i];       assert(mabs(sm0 - sm1) == mn);     };     chk();     return 0;   }   