#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); vectorcnt(M); vector v(K,vector(K,-1)),ans(N,vector(N,-1)); vector>vt(K*K); rep(i,K)rep(j,K)vt[i*K+j]={(ll)min(i,j)*inf+i+j,i,j}; sort(rall(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]; ans[i][j]=val; if(val!=-1)++cnt[val]; }rep(i,M)if(cnt[i]>N*N/M)cout<<114514,exit(0); rep(i,N)rep(j,N)if(ans[i][j]==-1){ rep(k,M)if(cnt[k]+1<=N*N/M){ ans[i][j]=k,++cnt[k]; break; } }rep(i,N){ rep(j,N)cout<