func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 2010;   int a[maxn], b[maxn], tot, n, m;   pair<int, int> ans1, ans21, ans22;   pair<long long, pair<int, int> > two[maxn * maxn];   int main(void) {     long long s = 0, s2 = 1e18, s3 = 1e18;     scanf( %d , &n);     for (int i = 1; i <= n; i++) scanf( %d , &a[i]), s += a[i];     scanf( %d , &m);     for (int i = 1; i <= m; i++) scanf( %d , &b[i]), s -= b[i];     for (int i = 1; i <= n; i++)       for (int j = 1; j <= m; j++) {         long long tem = abs(s + 2 * b[j] - 2 * a[i]);         if (tem < s2) s2 = tem, ans1 = make_pair(i, j);       }     for (int i = 1; i <= m; i++)       for (int j = i + 1; j <= m; j++)         two[++tot] = make_pair(2ll * b[i] + 2ll * b[j], make_pair(i, j));     sort(two + 1, two + 1 + tot);     for (int i = 1; i <= n; i++)       for (int j = i + 1; j <= n; j++) {         long long tmp = 2ll * a[i] + 2ll * a[j] - s;         int p =             lower_bound(two + 1, two + 1 + tot, make_pair(tmp, make_pair(0, 0))) -             two - 1;         for (int t = max(1, p - 2); t <= min(tot, p + 2); t++) {           long long tem = abs(s + two[t].first - 2ll * a[i] - 2ll * a[j]);           if (tem < s3) {             s3 = tem;             ans21 = make_pair(i, two[t].second.first);             ans22 = make_pair(j, two[t].second.second);           }         }       }     long long ans = min(min(abs(s), abs(s2)), abs(s3));     printf( %lld n , ans);     if (ans == s)       printf( 0 n );     else if (ans == abs(s2))       printf( 1 n%d %d n , ans1.first, ans1.second);     else       printf( 2 n%d %d n%d %d n , ans21.first, ans21.second, ans22.first,              ans22.second);     return 0;   }   