#include"bits/stdc++.h" using namespace std; using ll=long long; using ull=unsigned long long; using ld=long double; #define all(a)a.begin(),a.end() #define rall(a)a.rbegin(),a.rend() #define rep(i,n)for(int i=0;i<(n);++i) #define YN(ans)cout<<(ans?"Yes\n":"No\n") #define uni(a)sort(all(a)),a.erase(unique(all(a)),a.end()) #define pv(a)cerr<<#a<<':';for(auto e:a)cerr<<' '<bool chmin(T&a,T b){if(a>b){a=b;return 1;}return 0;} templatebool chmax(T&a,T b){if(async_with_stdio(0),cout<>N>>M>>K; if(M>K*K)cout<<"-1\n",exit(0); vectorcnt2(M); vector v1(N,vector(N)),v2(N,vector(N)),cnt(K,vector(K)),v(K,vector(K,-1)),ans(N,vector(N,-1)); rep(i,N){ rep(j,N)v1[i][j]=i%K; if(i/K%2==0)rep(j,N)v2[i][j]=j%K; else rep(j,N)v2[i][j]=K-j%K-1; rep(j,N)++cnt[v1[i][j]][v2[i][j]]; }vector>vt(K*K); rep(i,K)rep(j,K)vt[i*K+j]={cnt[i][j],i,j}; sort(all(vt)); rep(i,M){ auto[_,x,y]=vt[i]; v[x][y]=i; }rep(i,N)rep(j,N){ ll val=v[i%K][j%K]; if(val!=-1)ans[i][j]=val,++cnt2[val]; }rep(i,M)if(cnt2[i]>N*N/M)cout<<"-1\n",exit(0); rep(i,N){ rep(j,N){ if(ans[i][j]==-1)rep(k,M)if(cnt2[k]+1<=N*N/M){ ans[i][j]=k,++cnt2[k]; break; }cout<