#include <bits/stdc++.h>
using namespace std;
int n, m, N, M;
long long delta, aans, suma, sumb, a[2005], b[2005];
struct Ans {
  int num, pos[2][2];
} ans;
struct List {
  long long sum;
  int pos[2];
} A[2000005], B[2000005];
bool cmp(List x, List y) { return x.sum < y.sum; }
bool Check(long long lim) { return -delta - lim > 0; }
int Find(long long x) {
  int l = 1, r = N;
  while (l < r) {
    int mid = (l + r) >> 1;
    if (Check(x - A[mid].sum * 2))
      r = mid;
    else
      l = mid + 1;
  }
  return l;
}
void Output() {
  printf("%I64d\n", aans);
  printf("%d\n", ans.num);
  for (int i = 0; i < ans.num; i++)
    printf("%d %d\n", ans.pos[i][0], ans.pos[i][1]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &a[i]);
    suma += a[i];
  }
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    scanf("%I64d", &b[i]);
    sumb += b[i];
  }
  delta = suma - sumb;
  aans = abs(delta);
  ans.num = 0;
  if (aans == 0) {
    Output();
    return 0;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      long long temp = abs(delta + 2 * b[j] - 2 * a[i]);
      if (temp < aans) {
        aans = temp;
        ans.num = 1;
        ans.pos[0][0] = i;
        ans.pos[0][1] = j;
      }
    }
  if (aans == 0 || n == 1 || m == 1) {
    Output();
    return 0;
  }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) {
      A[++N].sum = a[i] + a[j];
      A[N].pos[0] = i;
      A[N].pos[1] = j;
    }
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++) {
      B[++M].sum = b[i] + b[j];
      B[M].pos[0] = i;
      B[M].pos[1] = j;
    }
  sort(A + 1, A + N + 1, cmp);
  int NN = 1;
  for (int i = 2; i <= N; i++)
    if (A[i].sum != A[NN].sum) A[++NN] = A[i];
  N = NN;
  for (int i = 1; i <= M; i++) {
    int pos = Find(B[i].sum * 2);
    for (int j = max(pos - 1, 1); j <= min(N, pos + 3); j++) {
      long long temp = abs(delta + 2 * (B[i].sum - A[j].sum));
      if (temp < aans) {
        aans = temp;
        ans.num = 2;
        ans.pos[0][0] = A[j].pos[0];
        ans.pos[0][1] = B[i].pos[0];
        ans.pos[1][0] = A[j].pos[1];
        ans.pos[1][1] = B[i].pos[1];
      }
    }
  }
  Output();
  return 0;
}
