#include <bits/stdc++.h>
using namespace std;
const int maxn = 2100;
int a[maxn], b[maxn], n, m, ansl;
long long ansk;
pair<long long, int> two[maxn * maxn];
set<long long> S;
pair<int, int> ans[2];
int main() {
  while (cin >> n) {
    long long sa = 0, sb = 0;
    for (int i = 0; i < n; i++) {
      scanf("%d", a + i);
      sa += a[i];
    }
    scanf("%d", &m);
    for (int i = 0; i < m; i++) {
      scanf("%d", b + i);
      sb += b[i];
    }
    ansk = abs(sa - sb);
    ansl = 0;
    for (int i = 0; i < n; i++)
      for (int j = 0; j < m; j++) {
        long long tsa = sa - a[i] + b[j];
        long long tsb = sb - b[j] + a[i];
        if (abs(tsa - tsb) < ansk) {
          ansk = abs(tsa - tsb);
          ansl = 1;
          ans[0] = make_pair(i + 1, j + 1);
        }
      }
    int cnt = 0;
    S.clear();
    for (int i = 0; i < n; i++)
      for (int j = i + 1; j < n; j++) {
        if (S.find(a[i] + a[j]) == S.end())
          two[cnt++] = make_pair(a[i] + a[j], i * n + j);
      }
    sort(two, two + cnt);
    for (int i = 0; i < m; i++)
      for (int j = i + 1; j < m; j++) {
        long long y = b[i] + b[j], x = (sa - sb) / 2 + y;
        int t = lower_bound(two, two + cnt, make_pair(x, -1)) - two;
        int l = max(t - 5, 0), r = min(t + 5, cnt - 1);
        for (int k = l; k <= r; k++) {
          x = two[k].first;
          long long tsa = sa - x + y;
          long long tsb = sb - y + x;
          if (abs(tsa - tsb) < ansk) {
            ansk = abs(tsa - tsb);
            ansl = 2;
            ans[0] = make_pair(two[k].second / n + 1, i + 1);
            ans[1] = make_pair(two[k].second % n + 1, j + 1);
          }
        }
      }
    cout << ansk << '\n' << ansl << endl;
    for (int i = 0; i < ansl; i++)
      printf("%d %d\n", ans[i].first, ans[i].second);
  }
  return 0;
}
