#include <bits/stdc++.h>
using namespace std;
const int N = 2050;
int a[N], b[N];
pair<int, int> ans1, ans21, ans22;
pair<long long, pair<int, int> > two[N * N];
int tot = 0;
int main() {
  long long s = 0;
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), s += a[i];
  int m;
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) scanf("%d", &b[i]), s -= b[i];
  long long s2 = 1e18;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      long long cur = abs(s + 2 * b[j] - 2 * a[i]);
      if (cur < s2) s2 = cur, ans1 = make_pair(i, j);
    }
  }
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++)
      two[++tot] = make_pair(2ll * (b[i] + b[j]), make_pair(i, j));
  sort(two + 1, two + tot + 1);
  long long s3 = 1e18;
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      long long tmp = 2ll * a[i] + 2ll * a[j] - s;
      int p =
          lower_bound(two + 1, two + 1 + tot, make_pair(tmp, make_pair(0, 0))) -
          two;
      for (int t = max(1, p - 2); t <= min(tot, p + 2); t++) {
        long long cur = abs(s + two[t].first - 2ll * a[i] - 2ll * a[j]);
        if (cur < s3) {
          s3 = cur;
          ans21 = make_pair(i, two[t].second.first);
          ans22 = make_pair(j, two[t].second.second);
        }
      }
    }
  }
  long long ans = min(min(abs(s), abs(s2)), abs(s3));
  cout << ans << endl;
  if (ans == s)
    printf("0\n");
  else if (ans == abs(s2)) {
    printf("1\n");
    printf("%d %d\n", ans1.first, ans1.second);
  } else {
    printf("2\n");
    printf("%d %d\n%d %d\n", ans21.first, ans21.second, ans22.first,
           ans22.second);
  }
  return 0;
}
