#include <bits/stdc++.h>
using namespace std;
long long EPS = 1000000007;
double PI = 3.14159265358979323846;
const int MAXN = 1000040;
long long abss(long long h) { return max(h, -h); }
double fabss(double h) { return max(h, -h); }
long long ceill(long long x, long long y) {
  if (x % y != 0) return (x / y) + 1;
  return x / y;
}
string itos(long long num) {
  string str = "";
  if (num == 0) return "0";
  while (num != 0) {
    str += ((num % 10) + '0');
    num /= 10;
  }
  reverse(str.begin(), str.end());
  return str;
}
long long sstoi(string num) {
  long long count = 1;
  for (int i = 0; i < (int)num.size() - 1; i++) {
    count *= 10;
  }
  long long ans = 0;
  for (int i = 0; i < (int)num.size(); i++) {
    ans += (num[i] - '0') * count;
    count /= 10;
  }
  return ans;
}
long long n, m, k;
long long a[MAXN];
long long b[MAXN];
pair<long long, pair<int, int> > c[MAXN * 6];
int main() {
  int n;
  cin >> n;
  long long s1 = 0;
  long long s2 = 0;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    s1 += a[i];
  }
  cin >> m;
  for (int j = 0; j < m; j++) {
    cin >> b[j];
    s2 += b[j];
  }
  long long minAns = EPS * EPS;
  vector<pair<int, int> > ans;
  if (minAns > abss(s1 - s2)) {
    minAns = abss(s1 - s2);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      long long t1 = s1 - a[i] + b[j];
      long long t2 = s2 + a[i] - b[j];
      if (minAns > abss(t1 - t2)) {
        minAns = abss(t1 - t2);
        ans.clear();
        ans.push_back(make_pair(i + 1, j + 1));
      }
    }
  }
  int k = 0;
  for (int i = 0; i < m; i++) {
    for (int j = i + 1; j < m; j++) {
      c[k].first = b[i] + b[j];
      c[k].second.first = i + 1;
      c[k].second.second = j + 1;
      k++;
    }
  }
  sort(c, c + k);
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      long long t1 = s1 - (a[i] + a[j]);
      long long t2 = s2 + a[i] + a[j];
      int l = 0;
      int r = k - 1;
      while (r - l > 100) {
        int mid = (l + r) / 2;
        t1 = t1 + c[mid].first;
        t2 -= c[mid].first;
        if (t1 > t2) {
          r = mid;
        } else {
          l = mid;
        }
        t1 = t1 - c[mid].first;
        t2 += c[mid].first;
      }
      for (int z = l; z <= r; z++) {
        t1 = t1 + c[z].first;
        t2 -= c[z].first;
        if (minAns > abss(t1 - t2)) {
          minAns = abss(t1 - t2);
          ans.clear();
          ans.push_back(make_pair(i + 1, c[z].second.first));
          ans.push_back(make_pair(j + 1, c[z].second.second));
        }
        t1 -= c[z].first;
        t2 += c[z].first;
      }
    }
  }
  cout << minAns << endl;
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i].first << " " << ans[i].second << endl;
  }
}
