#include <bits/stdc++.h>
using namespace std;
const long long INF = 0x3f3f3f3f3f3f3f3f;
vector<int> a, b;
struct mypair {
  long long val;
  int p1, p2;
  mypair() { val = p1 = p2 = 0; }
  mypair(long long _val, int _p1, int _p2) {
    val = _val;
    p1 = _p1;
    p2 = _p2;
  }
  bool operator<(const mypair& mr) const { return val < mr.val; }
  bool operator==(const mypair& mr) const { return val == mr.val; }
};
vector<mypair> c;
pair<int, int> pr1, pr2, pr;
long long sum;
long long solve1() {
  long long ans = INF, tmp;
  for (int i = 1; i < a.size(); i++) {
    for (int j = 1; j < b.size(); j++) {
      tmp = abs(sum - 2LL * (a[i] - b[j]));
      if (ans > tmp) {
        ans = tmp;
        pr = make_pair(i, j);
      }
    }
  }
  return ans;
}
long long f(int i, int j, int k) {
  return abs(sum - 2LL * (c[k].val - b[i] - b[j]));
}
void update(long long& ans, int i, int j, int k) {
  long long tmp = f(i, j, k);
  if (ans > tmp) {
    ans = tmp;
    pr1 = make_pair(c[k].p1, i);
    pr2 = make_pair(c[k].p2, j);
  }
}
long long solve2() {
  if (a.size() == 2 || b.size() == 2) return INF;
  for (int i = 1; i < a.size(); i++) {
    for (int j = i + 1; j < a.size(); j++) {
      c.push_back(mypair(a[i] + a[j], i, j));
    }
  }
  sort(c.begin(), c.end());
  c.erase(unique(c.begin(), c.end()), c.end());
  long long ans = INF;
  for (int i = 1; i < b.size(); i++) {
    for (int j = i + 1; j < b.size(); j++) {
      int l = 0, r = c.size() - 1, mid;
      while (l < r) {
        mid = (l + r) >> 1;
        if (f(i, j, mid) <= f(i, j, mid + 1))
          r = mid;
        else
          l = mid + 1;
      }
      update(ans, i, j, r);
      update(ans, i, j, 0);
      update(ans, i, j, c.size() - 1);
    }
  }
  return ans;
}
int main() {
  int n, m, val, k;
  scanf("%d", &n);
  a.push_back(0);
  sum = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &val);
    a.push_back(val);
    sum += val;
  }
  scanf("%d", &m);
  b.push_back(0);
  for (int i = 1; i <= m; i++) {
    scanf("%d", &val);
    b.push_back(val);
    sum -= val;
  }
  long long ans0 = abs(sum);
  long long ans1 = solve1();
  long long ans2 = solve2();
  cout << min(ans0, min(ans1, ans2)) << endl;
  if (ans0 < min(ans1, ans2)) {
    printf("0\n");
  } else if (ans1 < ans2) {
    printf("1\n%d %d\n", pr.first, pr.second);
  } else {
    printf("2\n%d %d\n%d %d\n", pr1.first, pr1.second, pr2.first, pr2.second);
  }
  return 0;
}
