#include <bits/stdc++.h>
using namespace std;
struct Res {
  long long val;
  vector<pair<long long, long long> > trace;
  friend ostream& operator<<(ostream& cout, Res& r) {
    cout << r.val << endl;
    cout << ((long long)(r.trace).size()) << endl;
    for (auto p : r.trace) {
      cout << p.first << ' ' << p.second << endl;
    }
    return cout;
  }
} res;
const long long MN = 2011;
long long na, nb, a[MN], b[MN], suma, sumb;
int main() {
  ios ::sync_with_stdio(0);
  cin.tie(0);
  while (cin >> na) {
    for (long long i = (1), _b = (na); i <= _b; ++i) cin >> a[i];
    cin >> nb;
    for (long long i = (1), _b = (nb); i <= _b; ++i) cin >> b[i];
    suma = 0;
    for (long long i = (1), _b = (na); i <= _b; ++i) suma += a[i];
    sumb = 0;
    for (long long i = (1), _b = (nb); i <= _b; ++i) sumb += b[i];
    res.val = llabs(suma - sumb);
    res.trace.clear();
    for (long long i = (1), _b = (na); i <= _b; ++i)
      for (long long j = (1), _b = (nb); j <= _b; ++j) {
        long long cura = suma - a[i] + b[j];
        long long curb = sumb + a[i] - b[j];
        long long cur = llabs(cura - curb);
        if (cur < res.val) {
          res.val = cur;
          res.trace.clear();
          res.trace.push_back(make_pair(i, j));
        }
      }
    vector<pair<long long, pair<long long, long long> > > alla;
    for (long long x = (1), _b = (na); x <= _b; ++x)
      for (long long y = (x + 1), _b = (na); y <= _b; ++y) {
        alla.push_back(make_pair(2 * (a[x] + a[y]), make_pair(x, y)));
      }
    sort(alla.begin(), alla.end());
    for (long long u = (1), _b = (nb); u <= _b; ++u)
      for (long long v = (u + 1), _b = (nb); v <= _b; ++v) {
        long long t = suma - sumb + 2 * (b[u] + b[v]);
        auto it = lower_bound(alla.begin(), alla.end(),
                              make_pair(t, make_pair(0LL, 0LL)));
        if (it != alla.end()) {
          long long cur = llabs(t - it->first);
          if (cur < res.val) {
            res.val = cur;
            res.trace.clear();
            res.trace.push_back(make_pair(it->second.first, u));
            res.trace.push_back(make_pair(it->second.second, v));
          }
        }
        if (it != alla.begin()) {
          --it;
          long long cur = llabs(t - it->first);
          if (cur < res.val) {
            res.val = cur;
            res.trace.clear();
            res.trace.push_back(make_pair(it->second.first, u));
            res.trace.push_back(make_pair(it->second.second, v));
          }
        }
      }
    cout << res << endl;
  }
}
