#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;
}
