#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int H,W; int A[202][202]; int CH,CW,swapped=0; void addV(vector>& R,int y1,int y2,int x,int v) { int y; for(y=y1;y<=y2;y++) R[y][x]=v; } void addH(vector>& R,int y,int x1,int x2,int v) { int x; for(x=x1;x<=x2;x++) R[y][x]=v; } vector> rotate(vector> A) { int y,x; if(A.empty()) return A; int H=A[0].size(); int W=A.size(); vector> R(H); FOR(y,H) { R[y].resize(W); FOR(x,W) R[y][x]=A[x][y]; } return R; } void out(vector> A) { if(A.empty()) { cout<<-1<> testC(int H,int W) { int i,j,k,l,r,x,y; string s; vector> R(H); R.resize(H); FOR(y,H) R[y].resize(W); if(H>W) { return rotate(testC(W,H)); } if(H==2) { return {}; } else if(H==3) { if(W%2) return {}; int nex=2; R[0][0]=R[0][1]=R[0][2]=1; R[1][0]=R[1][2]=1; R[2][0]=1; for(i=1;i> testT(int H,int W) { int i,j,k,l,r,x,y; string s; vector> R(H); R.resize(H); FOR(y,H) R[y].resize(W); if(H>W) { return rotate(testT(W,H)); } if(H==2) return {}; if(H==3) { if(W<6) return {}; R[0][0]=R[1][0]=R[2][0]=R[1][1]=1; R[1][2]=2; R[1][3]=3; for(x=1;x> testCT(int H,int W) { int i,j,k,l,r,x,y; string s; vector> R(H); R.resize(H); FOR(y,H) R[y].resize(W); if(H>W) { return rotate(testT(W,H)); } if(H==2) return {}; if(H==3) { addH(R,0,0,W-2,1); addH(R,2,0,W-2,1); R[1][0]=1; addH(R,1,1,W-1,2); R[0][W-1]=R[2][W-1]=2; } else if(H==4) { addH(R,0,0,W-1,1); R[1][W-2]=1; addH(R,1,0,W-3,2); addH(R,3,0,W-2,2); R[2][0]=2; addH(R,2,1,W-1,3); R[1][W-1]=R[3][W-1]=3; } else { auto V=testCT(H-2,W-2); int ma=0; FOR(y,H-2) FOR(x,W-2) { ma=max(ma,V[y][x]); R[y+2][x+1]=V[y][x]; } FOR(y,H) { R[y][0]=ma+1; R[y][W-1]=ma+3; } R[1][1]=ma+1; R[1][2]=ma+2; for(x=1;x>H>>W; ZERO(A); out(testC(H,W)); ZERO(A); out(testT(H,W)); ZERO(A); out(testCT(H,W)); } int main(int argc,char** argv){ string s;int i; if(argc==1) ios::sync_with_stdio(false), cin.tie(0); FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin); cout.tie(0); solve(); return 0; }