#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
#define ff first
#define ss second
#define tri array<int, 3>
const int inf = 2e18;
const int mod = 998244353;
const int mxn = 1e6 + 1;
vector<int> fact(mxn+1,1),invfact(mxn+1,1);
int exp(int x, int n)
{
int res = 1;
for (; n > 0; res = (n % 2 ? res * x % mod : res), x = x * x % mod, n /= 2)
;
return res;
}
int inv(int x)
{
return exp(x, mod - 2);
}
void init()
{
for(int i = 1; i <= mxn; i++)
fact[i]=fact[i-1]*i%mod;
invfact[mxn] = inv(fact[mxn]);
for(int i = mxn-1; i >= 0; i--)
invfact[i]=invfact[i+1]*(i+1)%mod;
}
int ncr(int n,int r)
{
if(n<r ||n<0||r<0)
return 0;
return fact[n]*invfact[r]%mod*invfact[n-r]%mod;
}
void solve()
{
int n,s,t;
cin >> n >> s >> t;
vector<vector<int>> v(n,vector<int>(s));
for(auto&a:v)for(int&x:a)cin>>x;
vector<list<pii>> g(t+1);
function<void(int,int)> fun = [&](int l,int r)
{
if(l==r)return;
int h = r-l+1>>1;
vector<pair<int&,int&>> edg;
int tmp1=0,tmp2=0;
for(int r = 0;r < n; r++)
for(int i = l; i < l+h; i++)
g[v[r][i]].push_back({v[r][i+h],edg.size()}),
g[v[r][i+h]].push_back({v[r][i],edg.size()}),
edg.push_back({v[r][i],v[r][i+h]});
int prev = -1;
for(int r = 0;r < n; r++)
for(int i = l;i < l+h;i++)
for(int cur = i;cur <= i+h;cur+=h)
if(g[v[r][cur]].size()%2)
{
if(prev==-1)
prev = v[r][cur];
else
{
g[prev].push_back({v[r][cur],edg.size()});
g[v[r][cur]].push_back({prev,edg.size()});
edg.push_back({tmp1,tmp2});
prev = -1;
}
}
vector<int> vis(edg.size(),0);
function<void(int)> dfs = [&](int cur)
{
while(g[cur].size())
{
while(g[cur].size()&&vis[g[cur].back().ss])
g[cur].pop_back();
if(g[cur].size())
{
pii a = g[cur].back();
vis[a.ss]=1;
g[cur].pop_back();
if(cur==edg[a.ss].ss)
swap(edg[a.ss].ff,edg[a.ss].ss);
dfs(a.ff);
}
}
};
for(int r = 0;r < n; r++)
for(int i = l; i < l+h; i++)
dfs(v[r][i]),dfs(v[r][i+h]);
fun(l,(l+r)/2);
fun((l+r)/2+1,r);
};
fun(0,s-1);
for(auto a:v)
{
for(int x:a)
cout<<x<<' ';
cout<<'\n';
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
init();
int t=1;
//cin >>t;
while(t--)solve();
return 0;
}