#include <bits/stdc++.h>
using namespace std;
int T;
int n, m;
int w[1005], h[1005];
vector<int> wpos, wneg, hpos, hneg;
bool used[1005];
bool calc(int w[], vector<int> &pos, vector<int> &neg) {
  pos.clear(), neg.clear();
  int sum = 0;
  for (long long(i) = (1); (i) <= (n); (i)++) sum += w[i];
  if (sum % 2) return false;
  sum /= 2;
  vector<int> dp(sum + 1);
  for (long long(i) = (1); (i) <= (sum); (i)++) dp[i] = -1;
  for (long long(i) = (0); (i) <= (n - 1); (i)++) {
    for (int j = sum; j >= 0; j--) {
      if (dp[j] < 0) continue;
      if (j + w[i + 1] <= sum && dp[j + w[i + 1]] < 0) dp[j + w[i + 1]] = i + 1;
    }
  }
  if (dp[sum] < 0) return false;
  for (long long(i) = (1); (i) <= (n); (i)++) used[i] = false;
  int j = sum;
  while (j > 0) {
    used[dp[j]] = true;
    j -= w[dp[j]];
  }
  for (long long(i) = (1); (i) <= (n); (i)++) {
    if (used[i])
      pos.push_back(w[i]);
    else
      neg.push_back(w[i]);
  }
  return true;
}
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> T;
  while (T--) {
    cin >> n;
    for (long long(i) = (1); (i) <= (n); (i)++) cin >> w[i];
    cin >> m;
    for (long long(i) = (1); (i) <= (m); (i)++) cin >> h[i];
    if (n != m) {
      cout << "No" << endl;
      continue;
    }
    if (!calc(w, wpos, wneg) || !calc(h, hpos, hneg)) {
      cout << "No" << endl;
      continue;
    }
    cout << "Yes" << endl;
    if (wpos.size() > wneg.size()) swap(wpos, wneg);
    if (hpos.size() < hneg.size()) swap(hpos, hneg);
    sort(wpos.rbegin(), wpos.rend());
    sort(wneg.rbegin(), wneg.rend());
    sort((hpos).begin(), (hpos).end());
    sort((hneg).begin(), (hneg).end());
    for (auto x : wneg) wpos.push_back(-x);
    for (auto x : hneg) hpos.push_back(-x);
    long long x = 0, y = 0;
    for (long long(i) = (0); (i) <= (2 * n - 1); (i)++) {
      cout << x << " " << y << "\n";
      if (i % 2 == 0)
        x += wpos[i / 2];
      else
        y += hpos[i / 2];
    }
  }
  flush(cout);
  return 0;
}
