#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using piii = tuple<ll, int, int>;
ll calc(ll sa, ll sb, ll pai, ll pbj) {
  ll sa_tmp = sa - pai + pbj;
  ll sb_tmp = sb - pbj + pai;
  return abs(sa_tmp - sb_tmp);
}
int main() {
  vector<ll> a, b;
  vector<piii> pa, pb;
  ll sa, sb;
  int n, m, i, j, k;
  cin >> n;
  a.resize(n), sa = 0;
  for (i = 0; i < n; ++i) {
    cin >> a[i];
    sa += a[i];
  }
  cin >> m;
  b.resize(m), sb = 0;
  for (i = 0; i < m; ++i) {
    cin >> b[i];
    sb += b[i];
  }
  ll res;
  int res_cnt, res_a, res_b;
  res = abs(sa - sb), res_cnt = 0, res_a = 0, res_b = 0;
  for (i = 0; i < n; ++i)
    for (j = 0; j < m; ++j) {
      ll sa_tmp = sa - a[i] + b[j];
      ll sb_tmp = sb - b[j] + a[i];
      if (res > abs(sa_tmp - sb_tmp))
        res = abs(sa_tmp - sb_tmp), res_cnt = 1, res_a = i, res_b = j;
    }
  for (i = 0; i < n; i++)
    for (j = i + 1; j < n; j++) {
      pa.push_back(make_tuple((long long)a[i] + a[j], i, j));
    }
  for (i = 0; i < m; i++)
    for (j = i + 1; j < m; j++) {
      pb.push_back(make_tuple((long long)b[i] + b[j], i, j));
    }
  sort(pa.begin(), pa.end());
  sort(pb.begin(), pb.end());
  ll diff = sa - sb;
  for (i = 0; i < pa.size(); i++) {
    ll pai = get<0>(pa[i]);
    ll value = pai - diff / 2;
    piii aim = make_tuple(value, 0, 0);
    auto it = lower_bound(pb.begin(), pb.end(), aim);
    if (it != pb.end()) {
      ll res_tmp = calc(sa, sb, pai, get<0>(*it));
      if (res_tmp < res)
        res = res_tmp, res_cnt = 2, res_a = i, res_b = it - pb.begin();
    }
    if (it != pb.begin()) {
      auto it_low = it - 1;
      ll res_tmp = calc(sa, sb, pai, get<0>(*it_low));
      if (res_tmp < res)
        res = res_tmp, res_cnt = 2, res_a = i, res_b = it_low - pb.begin();
    }
    aim = make_tuple(value + 1, 0, 0);
    it = lower_bound(pb.begin(), pb.end(), aim);
    if (it != pb.end()) {
      ll res_tmp = calc(sa, sb, pai, get<0>(*it));
      if (res_tmp < res)
        res = res_tmp, res_cnt = 2, res_a = i, res_b = it - pb.begin();
    }
  }
  if (res_cnt == 0) cout << res << "\n" << 0 << "\n";
  if (res_cnt == 1)
    cout << res << "\n" << 1 << "\n" << res_a + 1 << " " << res_b + 1 << "\n";
  if (res_cnt == 2) {
    cout << res << "\n";
    cout << res_cnt << "\n";
    cout << get<1>(pa[res_a]) + 1 << " " << get<1>(pb[res_b]) + 1 << "\n";
    cout << get<2>(pa[res_a]) + 1 << " " << get<2>(pb[res_b]) + 1 << "\n";
  }
  return 0;
}
