#include <bits/stdc++.h>
using namespace std;
void solve()
{
int n, m;
cin >> n >> m;
// int flag = 0;
// if(n > m)
// {
// swap(n, m);
// flag = 1;
// }
// if(n == 1)
// {
// cout << "YES" << endl;
// if(!flag)
// {
// for(int i = 1; i <= m; i ++) cout << i << ' ';
// cout << endl;
// }
// else
// {
// for(int i = 1; i <= m; i ++) cout << i << endl;
// }
// }
vector ans(n + 1, vector<int>(m + 1));
int now = 1;
for(int i = 1; i < n + m; i ++)
{
for(int j = max(1, i - m + 1); j <= min(n, i); j ++)
{
ans[j][i + 1 - j] = now ++;
}
}
cout << "YES" << endl;
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= m; j ++) cout << ans[i][j] << ' ';
cout << endl;
}
// for(int i = 1; i <= n; i ++)
// {
// for(int j = 1; j <= m; j ++) cout << ans[i][j] << ' ';
// cout << endl;
// }
// cout << endl;
// for(int i = 1; i <= m; i += 2)
// {
// if(i < m)
// {
// for(int j = 1; j <= n; j ++)
// for(int k = 0; k <= 1; k ++)
// ans[j][i + k] = now ++;
// }
// else
// {
// for(int j = n; j >= 1; j --)
// ans[j][i] = now ++;
// }
// }
// bool check = true;
// map<int, int> mp;
// for(int i = 1; i <= n; i ++)
// for(int j = 1; j < m; j ++)
// {
// int sum = ans[i][j] + ans[i][j + 1];
// if(mp.count(sum))
// {
// check = false;
// break;
// }
// else mp[sum] ++;
// }
// for(int j = 1; j <= m; j ++)
// for(int i = 1; i < n; i ++)
// {
// int sum = ans[i][j] + ans[i + 1][j];
// if(mp.count(sum))
// {
// check = false;
// break;
// }
// else mp[sum] ++;
// }
// if(check) cout << "T" << endl;
// else cout << "F" << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t = 1;
cin >> t;
while(t --)
solve();
return 0;
}