#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, pair<int, int> > > A, B;
int n, m;
long long INF = INT_MAX;
long long dif, D, ans1, ans2;
pair<int, int> p[2], q;
bool cmp(const pair<long long, pair<int, int> > &a,
         const pair<long long, pair<int, int> > &b) {
  return (a.first) < (b.first);
}
bool cmpf(const pair<long long, pair<int, int> > &b, const long long &a) {
  return (a) > (b.first);
}
void fun(long long X[], long long Y[]) {
  if (n < 2 || m < 2) return;
  int i, j, N = 0, M = 0;
  for (i = 0; i < n; i++)
    for (j = i + 1; j < n; j++)
      A.push_back(make_pair(X[i] + X[j], make_pair(i, j))), N++;
  sort(A.begin(), A.end(), cmp);
  for (i = 0; i < m; i++)
    for (j = i + 1; j < m; j++)
      B.push_back(make_pair(Y[i] + Y[j], make_pair(i, j))), M++;
  sort(B.begin(), B.end(), cmp);
  for (i = 0; i < N; i++) {
    vector<pair<long long, pair<int, int> > >::iterator low;
    long long z = A[i].first - dif;
    low = lower_bound(B.begin(), B.end(), z, cmpf);
    int idx = (low - B.begin());
    if (idx == M) idx = M - 1;
    if (idx > 0) {
      if (ans1 > abs(D - 2 * (A[i].first - B[idx].first))) {
        ans1 = abs(D - 2 * (A[i].first - B[idx].first));
        p[0] = A[i].second;
        p[1] = B[idx].second;
      }
      idx--;
      if (ans1 > abs(D - 2 * (A[i].first - B[idx].first))) {
        ans1 = abs(D - 2 * (A[i].first - B[idx].first));
        p[0] = A[i].second;
        p[1] = B[idx].second;
      }
    } else {
      if (ans1 > abs(D - 2 * (A[i].first - B[idx].first))) {
        ans1 = abs(D - 2 * (A[i].first - B[idx].first));
        p[0] = A[i].second;
        p[1] = B[idx].second;
      }
    }
  }
}
void fun2(long long X[], long long Y[]) {
  int i, j;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (ans2 > abs(D - 2 * (X[i] - Y[j]))) {
        ans2 = abs(D - 2 * (X[i] - Y[j]));
        q = make_pair(i, j);
      }
    }
  }
}
int main() {
  int i, j;
  INF *= INF;
  ans1 = INF;
  ans2 = INF;
  long long sum1 = 0, sum2 = 0;
  cin >> n;
  long long a[n];
  for (i = 0; i < n; i++) cin >> a[i], sum1 += a[i];
  cin >> m;
  long long b[m];
  for (i = 0; i < m; i++) cin >> b[i], sum2 += b[i];
  D = abs(sum1 - sum2);
  dif = D / 2;
  if (sum1 == sum2)
    printf("0\n0\n");
  else if (sum1 > sum2) {
    fun(a, b);
    fun2(a, b);
    if (ans1 > ans2) {
      cout << ans2 << "\n";
      printf("1\n");
      cout << q.first + 1 << " " << q.second + 1 << "\n";
    } else {
      cout << ans1 << "\n";
      cout << "2\n";
      cout << p[0].first + 1 << "\t" << p[1].first + 1 << "\n";
      cout << p[0].second + 1 << "\t" << p[1].second + 1 << "\n";
    }
  } else {
    swap(n, m);
    fun(b, a);
    fun2(b, a);
    if (ans1 > ans2) {
      cout << ans2 << "\n";
      printf("1\n");
      cout << q.second + 1 << " " << q.first + 1 << "\n";
    } else {
      cout << ans1 << "\n";
      cout << "2\n";
      cout << p[1].first + 1 << "\t" << p[0].second + 1 << "\n";
      cout << p[1].second + 1 << "\t" << p[0].first + 1 << "\n";
    }
  }
}
