#include <bits/stdc++.h>
inline long long MAX2(long long a, long long int b) {
  return (a) > (b) ? (a) : (b);
}
inline long long MAX3(long long a, long long b, long long c) {
  return (a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c));
}
inline long long MIN2(long long a, long long b) {
  return (a) < (b) ? (a) : (b);
}
inline long long MIN3(long long a, long long b, long long c) {
  return (a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c));
}
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int q;
  cin >> q;
  while (q--) {
    int b, w;
    cin >> b >> w;
    vector<pair<int, int> > co;
    if (b > w) {
      if (b > 3 * w + 1) {
        cout << "NO\n";
        continue;
      }
      int x = 1e5 + 1, y = 1e5 + 1;
      int i = 0;
      while (i < w - 1) {
        co.push_back(pair<int, int>(x, y));
        y++;
        co.push_back(pair<int, int>(x, y));
        y++;
        i++;
      }
      co.push_back(pair<int, int>(x, y));
      y++;
      int si = co.size();
      int req = b - w + 1;
      i = 0;
      while (i < si && req > 0) {
        co.push_back(pair<int, int>(co[i].first - 1, co[i].second));
        req--;
        if (req == 0) break;
        co.push_back(pair<int, int>(co[i].first + 1, co[i].second));
        req--;
        i += 2;
      }
      if (req > 0) {
        co.push_back(pair<int, int>(co[0].first, co[0].second - 1));
        req--;
      }
      if (req > 0) {
        co.push_back(
            pair<int, int>(co[2 * (w - 1)].first, co[2 * (w - 1)].second + 1));
        req--;
      }
    } else {
      if (w > 3 * b + 1) {
        cout << "NO\n";
        continue;
      }
      int x = 1e5, y = 1e5 + 1;
      int i = 0;
      while (i < b - 1) {
        co.push_back(pair<int, int>(x, y));
        y++;
        co.push_back(pair<int, int>(x, y));
        y++;
        i++;
      }
      co.push_back(pair<int, int>(x, y));
      y++;
      int si = co.size();
      int req = w - b + 1;
      i = 0;
      while (i < si && req > 0) {
        co.push_back(pair<int, int>(co[i].first - 1, co[i].second));
        req--;
        if (req == 0) break;
        co.push_back(pair<int, int>(co[i].first + 1, co[i].second));
        req--;
        i += 2;
      }
      if (req > 0) {
        co.push_back(pair<int, int>(co[0].first, co[0].second - 1));
        req--;
      }
      if (req > 0) {
        co.push_back(
            pair<int, int>(co[2 * (b - 1)].first, co[2 * (b - 1)].second + 1));
        req--;
      }
    }
    cout << "YES\n";
    int i, si = co.size();
    for (i = 0; i < si; i++) cout << co[i].first << " " << co[i].second << '\n';
  }
  cerr << '\n'
       << "Time elapsed : " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms"
       << '\n';
}
