本地手造了 18 组都没查出错
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned ll
#define rll register ll
#define cll const ll
#define fs first
#define sc second
#define N 100005
using namespace std;
inline ll read()
{
rll x=0;bool f=1;register char c=getchar();
while(c<48||c>57){if(c=='-') f=0;c=getchar();}
while(c>=48&&c<=57){x=x*10+(c^48);c=getchar();}
return f?x:-x;
}
inline void write(ll x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+48);
}
ll n,m,a[N];
inline void solve()
{
n=read(),m=read();
if(n==1&&m==1)
{
puts("YES\n1");
return;
}
if(m==1)
{
puts("NO");
return;
}
if(m&1^1)
{
puts("YES");
for(rll i=1;i<=m;i++)
{
for(rll j=1;j<=n;j++)
write((i&1)?j:n-j+1),putchar(' ');
putchar('\n');
}
return;
}
if(n&1^1)
{
puts("NO");
return;
}
puts("YES");
for(rll i=1;i<=n;i++)
write(i),putchar(' ');
putchar('\n');
rll idx=0;
for(rll i=(n+1)/2;i<=n;i++)
write(a[++idx]=i),putchar(' ');
for(rll i=1;i<=n/2;i++)
write(a[++idx]=i),putchar(' ');
putchar('\n');
for(rll i=1;i<=n;i++)
write((n+1)*3/2-i-a[i]),putchar(' ');
putchar('\n');
for(rll i=1;i<=m-3;i++)
{
for(rll j=1;j<=n;j++)
write((i&1)?j:n-j+1),putchar(' ');
putchar('\n');
}
}
int main()
{
rll T=read();
while(T--) solve();
return 0;
}