#include <bits/stdc++.h>
using namespace std;
inline long long Abs(long long x) { return x > 0 ? x : -x; }
map<long long, pair<int, int> > mp;
long long a[2010], b[2010];
int main() {
  int n, m;
  long long sa = 0, sb = 0, num = 0, ans;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%I64d", a + i);
    sa += a[i];
  }
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    scanf("%I64d", b + i);
    sb += b[i];
  }
  ans = max(sa, sb) - min(sa, sb);
  int l1, r1, l2, r2;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      long long tmp = Abs(sa - sb - 2 * a[i] + 2 * b[j]);
      if (ans > tmp) {
        num = 1;
        ans = tmp;
        l1 = i, r1 = j;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      mp[2 * (a[i] + a[j])] = make_pair(i, j);
    }
  }
  for (int i = 0; i < m; i++) {
    for (int j = i + 1; j < m; j++) {
      long long bsum = b[i] + b[j];
      map<long long, pair<int, int> >::iterator itr =
          mp.upper_bound(sa - sb + 2 * bsum);
      if (itr != mp.end()) {
        long long x = Abs(sa - sb + 2 * bsum - itr->first);
        if (x < ans) {
          num = 2;
          ans = x;
          l1 = itr->second.first;
          r1 = i;
          l2 = itr->second.second;
          r2 = j;
        }
      }
      if (itr != mp.begin()) {
        itr--;
        long long x = Abs(sa - sb + 2 * bsum - itr->first);
        if (x < ans) {
          num = 2;
          ans = x;
          l1 = itr->second.first;
          r1 = i;
          l2 = itr->second.second;
          r2 = j;
        }
      }
    }
  }
  printf("%I64d\n", ans);
  printf("%I64d\n", num);
  if (num) {
    printf("%d %d\n", l1 + 1, r1 + 1);
    if (num == 2) printf("%d %d\n", l2 + 1, r2 + 1);
  }
  return 0;
}
