#include <bits/stdc++.h>
using namespace std;
int T, n, m, sum1, sum2;
int len1[1000], len2[1000];
int dp[1000][20000];
bool can(void) {
  long long int lim = (1ll << 30) - 1, t;
  int s1 = sum1 / 30, s2 = sum2 / 30, p, q, r;
  for (int i = 0; i < n; i++)
    for (int j = 0; j <= s1; j++) dp[i][j] = 0;
  dp[0][0] = 1;
  dp[0][len1[0] / 30] = 1 << (len1[0] % 30);
  for (int i = 1; i < n; i++)
    for (int j = 0; j <= s1; j++) {
      p = len1[i] / 30;
      q = len1[i] % 30;
      r = 30 - q;
      dp[i][j] = dp[i - 1][j];
      if (j >= p) t = (long long int)dp[i - 1][j - p] << q & lim;
      if (j >= p) dp[i][j] |= (int)t;
      if (j > p) dp[i][j] |= (dp[i - 1][j - p - 1] >> r);
    }
  if (!(dp[n - 1][sum1 / 60] >> (sum1 / 2 % 30) & 1)) return 0;
  int pos = n - 1, s = sum1 >> 1;
  while (pos >= 0) {
    if (s > 0 && (pos == 0 || !(dp[pos - 1][s / 30] >> (s % 30) & 1))) {
      s -= len1[pos];
      len1[pos] *= -1;
    }
    pos--;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j <= s2; j++) dp[i][j] = 0;
  dp[0][0] = 1;
  dp[0][len2[0] / 30] = 1 << (len2[0] % 30);
  for (int i = 1; i < n; i++)
    for (int j = 0; j <= s2; j++) {
      p = len2[i] / 30;
      q = len2[i] % 30;
      r = 30 - q;
      dp[i][j] = dp[i - 1][j];
      if (j >= p) t = (long long int)dp[i - 1][j - p] << q & lim;
      if (j >= p) dp[i][j] |= (int)t;
      if (j > p) dp[i][j] |= (dp[i - 1][j - p - 1] >> r);
    }
  if (!(dp[n - 1][sum2 / 60] >> (sum2 / 2 % 30) & 1)) return 0;
  pos = n - 1;
  s = sum2 >> 1;
  while (pos >= 0) {
    if (s > 0 && (pos == 0 || !(dp[pos - 1][s / 30] >> (s % 30) & 1))) {
      s -= len2[pos];
      len2[pos] *= -1;
    }
    pos--;
  }
  return 1;
}
int d1, d2;
void solve(void) {
  sort(len1, len1 + n);
  sort(len2, len2 + n);
  for (int i = 0; i < n; i++)
    if (len1[i] > 0) {
      d1 = i;
      break;
    }
  for (int i = 0; i < n; i++)
    if (len2[i] > 0) {
      d2 = i;
      break;
    }
  if (d1 <= d2) {
    for (int i = 0; (i << 1) < n - d1; i++) swap(len1[d1 + i], len1[n - 1 - i]);
    for (int i = 0; (i << 1) < d2; i++) swap(len2[i], len2[d2 - 1 - i]);
  } else {
    for (int i = 0; (i << 1) < d1; i++) swap(len1[i], len1[d1 - 1 - i]);
    for (int i = 0; (i << 1) < n - d2; i++) swap(len2[d2 + i], len2[n - 1 - i]);
  }
  return;
}
void print(void) {
  printf("Yes\n");
  if (d1 <= d2) {
    int px = 0, py = 0;
    for (int i = 0; i < n; i++) {
      px += len1[i];
      printf("%d %d\n", px, py);
      py += len2[i];
      printf("%d %d\n", px, py);
    }
  } else {
    int px = 0, py = 0;
    for (int i = 0; i < n; i++) {
      py += len2[i];
      printf("%d %d\n", px, py);
      px += len1[i];
      printf("%d %d\n", px, py);
    }
  }
  return;
}
void abC(void) {
  sum1 = sum2 = 0;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &len1[i]);
    sum1 += len1[i];
  }
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    scanf("%d", &len2[i]);
    sum2 += len2[i];
  }
  if (n != m || (sum1 & 1) || (sum2 & 1) || !can()) {
    printf("No\n");
    return;
  }
  solve();
  print();
  return;
}
int main(void) {
  scanf("%d", &T);
  while (T--) abC();
  return 0;
}
