#include <bits/stdc++.h>
using namespace std;
const int N = 2020;
pair<int, int> a[N], b[N];
long long aa[N * N], bb[N * N];
bool find_smaller(int n, int m, long long target, int &x1, int &x2, int &y1,
                  int &y2, long long &p) {
  int c1 = 0, c2 = 0;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) aa[++c1] = a[i].first + a[j].first;
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++) bb[++c2] = -(b[i].first + b[j].first);
  sort(aa + 1, aa + c1 + 1);
  sort(bb + 1, bb + c2 + 1);
  reverse(aa + 1, aa + c1 + 1);
  long long v = -(1LL << 60);
  long long first, second;
  for (int i = 1, j = 0; i <= c1; i++) {
    while (j + 1 <= c2 && aa[i] + bb[j + 1] <= target) {
      j++;
    }
    if (j >= 1 && j <= c2 && aa[i] + bb[j] <= target && aa[i] + bb[j] > v) {
      v = aa[i] + bb[j];
      first = aa[i];
      second = bb[j];
    }
  }
  if (v == -(1LL << 60)) return false;
  p = v;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      if (a[i].first + a[j].first == first) x1 = a[i].second, x2 = a[j].second;
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++)
      if (b[i].first + b[j].first == -second)
        y1 = b[i].second, y2 = b[j].second;
  return true;
}
bool find_bigger(int n, int m, long long target, int &x1, int &x2, int &y1,
                 int &y2, long long &p) {
  int c1 = 0, c2 = 0;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) aa[++c1] = a[i].first + a[j].first;
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++) bb[++c2] = -(b[i].first + b[j].first);
  sort(aa + 1, aa + c1 + 1);
  sort(bb + 1, bb + c2 + 1);
  long long v = (1LL << 60);
  long long first, second;
  for (int i = 1, j = c2; i <= c1; i++) {
    while (j > 1 && aa[i] + bb[j - 1] > target) {
      j--;
    }
    if (j >= 1 && j <= c2 && aa[i] + bb[j] > target && aa[i] + bb[j] < v) {
      v = aa[i] + bb[j];
      first = aa[i];
      second = bb[j];
    }
  }
  if (v == (1LL << 60)) return false;
  p = v;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      if (a[i].first + a[j].first == first) x1 = a[i].second, x2 = a[j].second;
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++)
      if (b[i].first + b[j].first == -second)
        y1 = b[i].second, y2 = b[j].second;
  return true;
}
int main() {
  int n, m;
  cin >> n;
  long long sum1 = 0, sum2 = 0;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].first;
    sum1 += a[i].first;
    a[i].second = i;
  }
  cin >> m;
  for (int i = 1; i <= m; i++) {
    cin >> b[i].first;
    sum2 += b[i].first;
    b[i].second = i;
  }
  long long ans = abs(sum1 - sum2);
  int tot = 0;
  int x1 = -1, x2 = -1, y1 = -1, y2 = -1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      if (abs(sum1 - sum2 - 2 * a[i].first + 2 * b[j].first) < ans) {
        ans = abs(sum1 - sum2 - 2 * a[i].first + 2 * b[j].first);
        tot = 1;
        x1 = a[i].second, y1 = b[j].second;
      }
  int xx1, xx2, yy1, yy2;
  long long p;
  long long f = (sum1 - sum2) / 2;
  if (sum1 - sum2 < 0 && (sum1 - sum2) % 2) f--;
  bool flag = find_smaller(n, m, f, xx1, xx2, yy1, yy2, p);
  if (flag && abs(sum1 - sum2 - 2 * p) < ans) {
    ans = abs(sum1 - sum2 - 2 * p);
    tot = 2;
    x1 = xx1;
    x2 = xx2;
    y1 = yy1;
    y2 = yy2;
  }
  flag = find_bigger(n, m, f, xx1, xx2, yy1, yy2, p);
  if (flag && abs(sum1 - sum2 - 2 * p) < ans) {
    ans = abs(sum1 - sum2 - 2 * p);
    tot = 2;
    x1 = xx1;
    x2 = xx2;
    y1 = yy1;
    y2 = yy2;
  }
  cout << ans << endl;
  cout << tot << endl;
  if (tot) cout << x1 << " " << y1 << endl;
  if (tot == 2) cout << x2 << " " << y2 << endl;
  return 0;
}
