#include <bits/stdc++.h>
using namespace std;
const int maxn = 2000 + 10;
struct node {
  int i1, i2;
  long long x;
  bool operator<(const node zjz) const { return x < zjz.x; }
};
node w[maxn * maxn / 2];
int n, m;
long long a[maxn], b[maxn];
long long sa, sb, v0, v1, v2;
int pa, pb;
int p, q1, q2;
void work_0() {
  sa = 0, sb = 0;
  for (int i = 0; i < n; i++) sa += a[i];
  for (int i = 0; i < m; i++) sb += b[i];
  v0 = abs(sa - sb);
}
void work_1() {
  v1 = v0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      long long c = abs(sa - sb - 2 * a[i] + 2 * b[j]);
      if (c < v1) {
        v1 = c;
        pa = i;
        pb = j;
      }
    }
}
void work(int i, int j, int k) {
  long long c = abs(sa - sb - 2 * w[k].x + 2 * b[i] + 2 * b[j]);
  if (c < v2) {
    v2 = c;
    p = k;
    q1 = i;
    q2 = j;
  }
}
void work_2() {
  int tot = 0;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) {
      w[tot].i1 = i;
      w[tot].i2 = j;
      w[tot].x = a[i] + a[j];
      tot++;
    }
  sort(w, w + tot);
  v2 = v1;
  for (int i = 0; i < m; i++)
    for (int j = i + 1; j < m; j++) {
      long long y = b[i] + b[j];
      int l = 0, r = tot - 1, mid, k = -1;
      while (l <= r) {
        mid = (l + r) / 2;
        if (2 * w[mid].x <= sa - sb + 2 * y) {
          k = mid;
          l = mid + 1;
        } else
          r = mid - 1;
      }
      work(i, j, 0);
      work(i, j, tot - 1);
      if (k >= 0 && k < tot - 1) {
        work(i, j, k);
        work(i, j, k + 1);
      }
    }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) scanf("%I64d", &a[i]);
  cin >> m;
  for (int i = 0; i < m; i++) scanf("%I64d", &b[i]);
  work_0();
  work_1();
  if (n > 1 && m > 1)
    work_2();
  else
    v2 = v1;
  long long v = min(min(v0, v1), v2);
  if (v == v0)
    cout << v0 << endl << 0 << endl;
  else if (v == v1)
    cout << v1 << endl << "1" << endl << pa + 1 << " " << pb + 1 << endl;
  else
    cout << v2 << endl
         << "2" << endl
         << w[p].i1 + 1 << " " << q1 + 1 << endl
         << w[p].i2 + 1 << " " << q2 + 1 << endl;
  return 0;
}
