#include <bits/stdc++.h>
using namespace std;
const long long MAX = 100010;
const long long MOD = 1000000007;
const long long INF = (long long)1e9;
const long long LLINF = 0x3f3f3f3f3f3f3f3f;
const long double EPS = 1e-7;
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long n, m;
  cin >> n;
  long long somaa0 = 0, somab0 = 0;
  vector<long long> a(n);
  for (long long i = 0; i < (long long)n; i++) {
    cin >> a[i];
    somaa0 += a[i];
  }
  cin >> m;
  vector<long long> b(m);
  for (long long i = 0; i < (long long)m; i++) {
    cin >> b[i];
    somab0 += b[i];
  }
  vector<pair<long long, long long> > res;
  long long melhor = abs(somaa0 - somab0);
  set<long long> setb;
  for (long long i = 0; i < (long long)m; i++) {
    for (long long j = i + 1; j <= m - 1; j++) {
      setb.insert(2 * b[i] + 2 * b[j]);
    }
  }
  for (long long i = 0; i < (long long)n; i++) {
    for (long long j = 0; j < (long long)m; j++) {
      long long somaa1 = somaa0 - a[i] + b[j];
      long long somab1 = somab0 + a[i] - b[j];
      if (abs(somaa1 - somab1) < melhor) {
        melhor = abs(somaa1 - somab1);
        res.clear();
        res.push_back(make_pair(i, j));
      }
    }
  }
  bool win2 = false;
  for (long long i = 0; i < a.size(); i++) {
    for (long long j = i + 1; j < a.size(); j++) {
      long long somaa2 = somaa0 - a[i] - a[j];
      long long somab2 = somab0 + a[i] + a[j];
      long long m = somab2 - somaa2;
      auto it = setb.lower_bound(m);
      if (it != setb.end()) {
        long long val = *it;
        if (abs(val + somaa2 - somab2) < melhor) {
          melhor = abs(val + somaa2 - somab2);
          win2 = true;
          res.clear();
          res.push_back(make_pair(i, j));
        }
      }
      if (it != setb.begin()) {
        auto it2 = prev(it);
        long long val = *it2;
        if (abs(val + somaa2 - somab2) < melhor) {
          melhor = abs(val + somaa2 - somab2);
          win2 = true;
          res.clear();
          res.push_back(make_pair(i, j));
        }
      }
    }
  }
  if (win2) {
    long long ia = res[0].first, ja = res[0].second;
    long long somaa2 = somaa0 - a[ia] - a[ja];
    long long somab2 = somab0 + a[ia] + a[ja];
    for (long long i = 0; i < (long long)m; i++) {
      for (long long j = i + 1; j <= m - 1; j++) {
        if (abs(somaa2 + 2 * b[i] + 2 * b[j] - somab2) <= melhor) {
          res.clear();
          res.push_back(make_pair(ia, i));
          res.push_back(make_pair(ja, j));
        }
      }
    }
  }
  cout << melhor << '\n';
  cout << res.size() << '\n';
  for (auto val : res) {
    cout << val.first + 1 << " " << val.second + 1 << '\n';
  }
  return 0;
}
