#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e3 + 20;
int n, m, a[MAXN], b[MAXN];
long long s1, s2;
set<pair<long long, pair<int, int>>> st2;
vector<pair<int, int>> ans;
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i], s1 += a[i];
  cin >> m;
  for (int i = 0; i < m; i++) cin >> b[i], s2 += b[i];
  long long mini = abs(s1 - s2);
  for (int i = 0; i < m; i++)
    for (int j = i + 1; j < m; j++) st2.insert({b[i] + b[j], {i, j}});
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      long long ts1 = s1, ts2 = s2;
      ts1 -= a[i];
      ts2 -= b[j];
      ts1 += b[j];
      ts2 += a[i];
      if (abs(ts1 - ts2) < mini) {
        mini = abs(ts1 - ts2);
        ans.clear();
        ans.push_back({i, j});
      }
    }
    for (int j = i + 1; j < n; j++) {
      long long ts1 = s1, ts2 = s2;
      long long z = abs(s1 - s2);
      z /= 2;
      auto it = st2.begin();
      if (s1 < s2)
        it = st2.upper_bound({a[i] + a[j] + z, {-1, -1}});
      else
        it = st2.upper_bound({a[i] + a[j] - z, {-1, -1}});
      auto it2 = it;
      if (it != st2.end()) {
        long long temp = abs((ts1 - a[i] - a[j] + it->first) -
                             (ts2 + a[i] + a[j] - it->first));
        if (temp < mini) {
          mini = temp;
          ans.clear();
          ans.push_back({i, it->second.first});
          ans.push_back({j, it->second.second});
        }
      }
      if (it != st2.begin()) {
        it--;
        long long temp;
        if ((temp = abs((ts1 - a[i] - a[j] + it->first) -
                        (ts2 + a[i] + a[j] - it->first))) < mini) {
          mini = temp;
          ans.clear();
          ans.push_back({i, it->second.first});
          ans.push_back({j, it->second.second});
        }
      }
    }
  }
  cout << mini << endl;
  cout << ans.size() << endl;
  for (pair<int, int> v : ans)
    cout << v.first + 1 << " " << v.second + 1 << endl;
  return 0;
}
