#include <bits/stdc++.h>
int dr[] = {2, 2, -2, -2, 1, -1, 1, -1};
int dc[] = {1, -1, 1, -1, 2, 2, -2, -2};
int dr1[] = {0, 0, 1, 1, 1, -1, -1, -1};
int dc1[] = {1, -1, 1, 0, -1, 0, 1, -1};
int dr2[] = {0, 0, 1, -1};
int dc2[] = {1, -1, 0, 0};
using namespace std;
long long a[500005], b[500005];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long q, i, j, m, g, r, p, x, d, k, n;
  while (cin >> n) {
    long long sa = 0, sb = 0;
    for (i = 1; i <= n; i++) {
      cin >> a[i];
      sa += a[i];
    }
    cin >> m;
    for (i = 1; i <= m; i++) {
      cin >> b[i];
      sb += b[i];
    }
    vector<pair<long long, long long> > v;
    long long min1 = 20000000000000000;
    min1 = abs(sa - sb);
    for (i = 1; i <= n; i++) {
      for (j = 1; j <= m; j++) {
        long long p = sa - a[i] + b[j];
        long long q = sb - b[j] + a[i];
        long long r = abs(p - q);
        if (r < min1) {
          v.clear();
          min1 = r;
          v.push_back({i, j});
        }
      }
    }
    vector<pair<long long, pair<long long, long long> > > v1;
    for (i = 1; i <= m; i++) {
      for (j = i + 1; j <= m; j++) {
        long long p = b[i] + b[j];
        v1.push_back({p, make_pair(i, j)});
      }
    }
    sort(v1.begin(), v1.end());
    for (i = 1; i <= n; i++) {
      if (v1.size() == 0) break;
      for (j = i + 1; j <= n; j++) {
        long long p = sa - a[i] - a[j];
        long long q = sb + a[i] + a[j];
        long long d = (p - q) * (-1);
        d /= 2;
        long long lo = 0, hi = v1.size() - 1, ans = 0;
        while (lo <= hi) {
          long long mid = (lo + hi) >> 1;
          if (v1[mid].first <= d) {
            ans = mid;
            lo = mid + 1;
          } else
            hi = mid - 1;
        }
        long long x = v1[ans].second.first;
        long long y = v1[ans].second.second;
        p += v1[ans].first;
        q -= v1[ans].first;
        d = abs(p - q);
        if (d < min1) {
          min1 = d;
          v.clear();
          v.push_back({i, x});
          v.push_back({j, y});
        }
        p -= v1[ans].first;
        q += v1[ans].first;
        if (ans + 1 < v1.size()) {
          ans++;
          long long x = v1[ans].second.first;
          long long y = v1[ans].second.second;
          p += v1[ans].first;
          q -= v1[ans].first;
          long long d = abs(p - q);
          if (d < min1) {
            min1 = d;
            v.clear();
            v.push_back({i, x});
            v.push_back({j, y});
          }
        }
      }
    }
    cout << min1 << endl;
    cout << v.size() << endl;
    for (i = 0; i < v.size(); i++)
      cout << v[i].first << " " << v[i].second << endl;
  }
  return 0;
}
