#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) #define Inf 1000000001 vector get(int n){ int t = n; vector b; rep(i,t/3){ b.push_back(1); b.push_back(1); b.push_back(0); } if(t%3==1)b.insert(b.begin(),0); else if(t%3==2){ b.push_back(1); b.push_back(1); } return b; } int main(){ int _t; cin>>_t; rep(_,_t){ int h,w; cin>>h>>w; vector> ans(h,vector(w,0)); if(h==1||w==1){ auto b = get(max(h,w)); rep(i,h){ rep(j,w){ ans[i][j] = b.back(); b.pop_back(); } } } else if(h==2||w==2){ auto b = get(max(h,w)); if(w==2){ rep(i,h){ rep(j,w){ ans[i][j] = b.back()+1; } b.pop_back(); } } else{ rep(i,w){ rep(j,h){ ans[j][i] = b.back()+1; } b.pop_back(); } } } else if((h==3||w==3)&&min(h,w)>=3){ auto b = get(max(h,w)-2); rep(i,h){ rep(j,w){ ans[i][j] = 2; if(i!=0&&i!=h-1&&j!=0&&j!=w-1){ ans[i][j] = b.back(); b.pop_back(); } } } } else{ cout<<-1<