#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  scanf("%d", &n);
  vector<int> a(n);
  long long x = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    x += a[i];
  }
  int m;
  scanf("%d", &m);
  vector<int> b(m);
  long long y = 0;
  for (int i = 0; i < m; i++) {
    scanf("%d", &b[i]);
    y += b[i];
  }
  long long dif = x - y;
  long long best = abs(dif);
  int k = 0;
  pair<int, int> p1, p2;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      long long delta = 2LL * (a[i] - b[j]);
      if (abs(dif - delta) < best) {
        best = abs(dif - delta);
        k = 1;
        p1 = {i, j};
      }
    }
  vector<pair<long long, pair<int, int>>> pb;
  for (int i = 0; i < m; i++)
    for (int j = i + 1; j < m; j++) pb.push_back({2LL * (b[i] + b[j]), {i, j}});
  sort((pb).begin(), (pb).end());
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) {
      long long s = 2LL * (a[i] + a[j]);
      pair<long long, pair<int, int>> val{s - dif, {0, 0}};
      auto it = lower_bound((pb).begin(), (pb).end(), val);
      if (it != pb.begin()) {
        --it;
        long long d = abs(dif - (s - it->first));
        if (d < best) {
          best = d;
          k = 2;
          p1 = {i, it->second.first};
          p2 = {j, it->second.second};
        }
        ++it;
      }
      if (it != pb.end()) {
        long long d = abs(dif - (s - it->first));
        if (d < best) {
          best = d;
          k = 2;
          p1 = {i, it->second.first};
          p2 = {j, it->second.second};
        }
      }
    }
  printf("%lld\n%d\n", best, k);
  if (k > 0) printf("%d %d\n", p1.first + 1, p1.second + 1);
  if (k == 2) printf("%d %d\n", p2.first + 1, p2.second + 1);
}
