#include <bits/stdc++.h>
using namespace std;
struct number {
  long long sum, a, b;
  bool operator<(const number& in) const { return sum < in.sum; }
  bool operator>(const number& in) const { return sum > in.sum; }
};
vector<number> v;
const long long MN = 2000 + 1;
long long a[MN], b[MN];
long long n, m, suma, sumb;
int main() {
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
    suma += a[i];
  }
  cin >> m;
  for (long long j = 0; j < m; j++) {
    cin >> b[j];
    sumb += b[j];
  }
  for (long long i = 0; i < m; i++)
    for (long long j = i + 1; j < m; j++) {
      number temp;
      temp.a = i;
      temp.b = j;
      temp.sum = 2 * (b[i] + b[j]);
      v.push_back(temp);
    }
  sort(v.begin(), v.end());
  long long best = abs(suma - sumb), in1 = -1, in2, in3 = -1;
  for (long long i = 0; i < n; i++)
    for (long long j = 0; j < m; j++)
      if (best > abs(suma - sumb - a[i] - a[i] + b[j] + b[j])) {
        best = abs(suma - sumb - a[i] - a[i] + b[j] + b[j]);
        in1 = i;
        in2 = j;
      }
  if (m > 1 && n > 1) {
    for (long long i = 0; i < n; i++)
      for (long long j = i + 1; j < n; j++) {
        long long want = suma - sumb - a[i] - a[j] - a[i] - a[j];
        want *= -1;
        vector<number>::iterator low, up;
        number temp;
        temp.sum = want;
        low = std::lower_bound(v.begin(), v.end(), temp);
        up = upper_bound(v.begin(), v.end(), temp);
        if (low >= v.begin() && low < v.end())
          if (best > abs(want - v[low - v.begin()].sum)) {
            best = abs(want - v[low - v.begin()].sum);
            in1 = i;
            in2 = j;
            in3 = low - v.begin();
          }
        while (up >= v.end()) up--;
        if (best > abs(want - v[up - v.begin()].sum)) {
          best = abs(want - v[up - v.begin()].sum);
          in1 = i;
          in2 = j;
          in3 = up - v.begin();
        }
      }
  }
  if (in1 == -1) {
    cout << best << endl << 0 << endl;
    return 0;
  }
  if (in3 == -1) {
    cout << best << endl << 1 << endl << in1 + 1 << " " << in2 + 1 << endl;
    return 0;
  }
  cout << best << endl;
  cout << 2 << endl;
  cout << in1 + 1 << " " << v[in3].a + 1 << endl;
  cout << in2 + 1 << " " << v[in3].b + 1 << endl;
  return 0;
}
