#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int T, n, m, a[maxn], b[maxn], p[4][maxn], len[4];
pair<int, int> ans[maxn];
bitset<1000010> f[1010];
inline pair<int, int> operator+(pair<int, int> a, pair<int, int> b) {
  return pair<int, int>(a.first + b.first, a.second + b.second);
}
int main() {
  scanf("%d", &T);
  while (T--) {
    a[0] = b[0] = 0;
    memset((len), 0, sizeof(len));
    scanf("%d", &n);
    for (int i = (1), _end_ = (n); i <= _end_; ++i) {
      scanf("%d", &a[i]);
      a[0] += a[i];
    }
    scanf("%d", &m);
    for (int i = (1), _end_ = (m); i <= _end_; ++i) {
      scanf("%d", &b[i]);
      b[0] += b[i];
    }
    if (n != m || a[0] % 2 != 0 || b[0] % 2 != 0) {
      puts("No");
      continue;
    }
    memset((f), 0, sizeof(f));
    f[0][0] = 1;
    for (int i = (1), _end_ = (n); i <= _end_; ++i)
      f[i] = f[i - 1] | (f[i - 1] << a[i]);
    int sum = a[0] / 2;
    if (!f[n][sum]) {
      puts("No");
      continue;
    }
    for (int i = n; i >= 1; --i)
      if (sum >= a[i] && f[i - 1][sum - a[i]]) {
        sum -= a[i];
        p[0][++len[0]] = a[i];
      } else
        p[1][++len[1]] = a[i];
    memset((f), 0, sizeof(f));
    f[0][0] = 1;
    for (int i = (1), _end_ = (n); i <= _end_; ++i)
      f[i] = f[i - 1] | (f[i - 1] << b[i]);
    sum = b[0] / 2;
    if (!f[n][sum]) {
      puts("No");
      continue;
    }
    for (int i = n; i >= 1; --i)
      if (sum >= b[i] && f[i - 1][sum - b[i]]) {
        sum -= b[i];
        p[2][++len[2]] = b[i];
      } else
        p[3][++len[3]] = b[i];
    for (int i = (0), _end_ = (3); i <= _end_; ++i)
      sort(p[i] + 1, p[i] + len[i] + 1);
    bool rev = false;
    if (len[0] > len[2]) {
      rev = true;
      swap(len[0], len[2]);
      swap(len[1], len[3]);
      swap(p[0], p[2]);
      swap(p[1], p[3]);
    }
    for (int i = (1), _end_ = (len[1]); i <= _end_; ++i) p[1][i] = -p[1][i];
    for (int i = (1), _end_ = (len[3]); i <= _end_; ++i) p[3][i] = -p[3][i];
    pair<int, int> now = pair<int, int>(0, 0);
    m = 0;
    int k = 1, t = 1;
    for (int i = len[0]; i >= 1; --i) {
      now =
          now + (rev ? pair<int, int>(0, p[0][i]) : pair<int, int>(p[0][i], 0));
      ans[++m] = now;
      now =
          now + (rev ? pair<int, int>(p[2][k], 0) : pair<int, int>(0, p[2][k]));
      ans[++m] = now;
      ++k;
    }
    while (k <= len[2]) {
      now =
          now + (rev ? pair<int, int>(0, p[1][t]) : pair<int, int>(p[1][t], 0));
      ans[++m] = now;
      ++t;
      now =
          now + (rev ? pair<int, int>(p[2][k], 0) : pair<int, int>(0, p[2][k]));
      ans[++m] = now;
      ++k;
    }
    t = len[1];
    for (int i = (1), _end_ = (len[3]); i <= _end_; ++i) {
      now =
          now + (rev ? pair<int, int>(0, p[1][t]) : pair<int, int>(p[1][t], 0));
      ans[++m] = now;
      --t;
      now =
          now + (rev ? pair<int, int>(p[3][i], 0) : pair<int, int>(0, p[3][i]));
      ans[++m] = now;
    }
    puts("Yes");
    for (int i = (1), _end_ = (m); i <= _end_; ++i)
      printf("%d %d\n", ans[i].first, ans[i].second);
  }
  return 0;
}
