#include <bits/stdc++.h>
using std::pair;
using std::vector;
pair<vector<int64_t>, vector<int64_t>> ReadInput();
void WriteAns(pair<int64_t, vector<pair<int64_t, int64_t>>>& data);
pair<int64_t, vector<pair<int64_t, int64_t>>> Solve(vector<int64_t>& data_fst,
                                                    vector<int64_t>& data_snd);
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
  auto input = ReadInput();
  auto result = Solve(input.first, input.second);
  WriteAns(result);
  return 0;
}
int64_t SumVec(vector<int64_t>& data);
pair<int64_t, vector<pair<int64_t, int64_t>>> Solve(vector<int64_t>& data_fst,
                                                    vector<int64_t>& data_snd) {
  int64_t sum_fst = SumVec(data_fst), sum_snd = SumVec(data_snd);
  int64_t ans = abs(sum_fst - sum_snd);
  vector<pair<int64_t, int64_t>> ansn;
  for (size_t i = 0; i < data_fst.size(); ++i) {
    for (size_t j = 0; j < data_snd.size(); ++j) {
      sum_fst += data_snd[j] - data_fst[i];
      sum_snd += data_fst[i] - data_snd[j];
      int64_t cur_ans = abs(sum_fst - sum_snd);
      if (ans > cur_ans) {
        ans = cur_ans;
        ansn.clear();
        ansn.push_back({i, j});
      }
      sum_fst -= data_snd[j] - data_fst[i];
      sum_snd -= data_fst[i] - data_snd[j];
    }
  }
  std::map<int64_t, pair<int64_t, int64_t>> smth;
  for (size_t i = 0; i < data_fst.size(); ++i) {
    for (size_t j = 0; j < i; ++j) {
      smth[2 * (data_fst[i] + data_fst[j])] = {i, j};
    }
  }
  for (size_t j = 0; j < data_snd.size(); ++j) {
    for (size_t i = 0; i < j; ++i) {
      int64_t value = sum_fst - sum_snd + 2 * (data_snd[i] + data_snd[j]);
      auto it = smth.lower_bound(value);
      if (it != smth.begin()) {
        --it;
      }
      for (size_t idx = 0; idx < 2; ++idx) {
        if (it == smth.end()) {
          break;
        }
        int64_t cur_ans = abs(value - it->first);
        pair<int64_t, int64_t> pr = it->second;
        assert(abs(sum_fst - 2 * (data_fst[pr.first] + data_fst[pr.second]) -
                   (sum_snd - 2 * (data_snd[i] + data_snd[j]))) == cur_ans);
        if (ans > cur_ans) {
          ans = cur_ans;
          ansn.clear();
          ansn.push_back({pr.first, i});
          ansn.push_back({pr.second, j});
        }
        ++it;
      }
    }
  }
  return {ans, ansn};
}
int64_t SumVec(vector<int64_t>& data) {
  int64_t ans = 0;
  for (auto elem : data) {
    ans += elem;
  }
  return ans;
}
pair<vector<int64_t>, vector<int64_t>> ReadInput() {
  int64_t num;
  std::cin >> num;
  vector<int64_t> fst(num);
  for (auto& elem : fst) {
    std::cin >> elem;
  }
  std::cin >> num;
  vector<int64_t> snd(num);
  for (auto& elem : snd) {
    std::cin >> elem;
  }
  return {fst, snd};
}
void WriteAns(pair<int64_t, vector<pair<int64_t, int64_t>>>& data) {
  std::cout << data.first << '\n' << data.second.size() << '\n';
  for (auto elem : data.second) {
    std::cout << elem.first + 1 << ' ' << elem.second + 1 << '\n';
  }
}
