#include<bits/stdc++.h>
using namespace std;
long long int n, m, k;
long long int arr[60][60];
long long int brr[60];
int main()
{
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
cin >> arr[i][j];
}
}
while (k--)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
brr[j] += arr[i][j];
}
}
long long int mini = 9223372036854775807;
int maxx = 0;
set<int>xrr;
for (int i = 1; i <= m; i++)
{
if (brr[i] > maxx)
{
maxx = brr[i];
}
if (brr[i] < mini)
{
mini = brr[i];
}
}
for (int i = 1; i <= m; i++)
{
if (brr[i] == maxx)
{
xrr.insert(i);
}
if (brr[i] == mini)
{
xrr.insert(i);
}
}
priority_queue<int>crr;
for (int i = 1; i <= m; i++)
{
if (brr[i] == maxx || brr[i] == mini)
{
for (int j = 1; j <= n; j++)
{
crr.push(arr[j][i]);
}
}
}
int cont = 0;
int sz = xrr.size();
int y = 0;
while (!crr.empty())
{
long long int temp = crr.top();
crr.pop();
int i = (cont / sz) + 1;
if (i % 2 != 0)y = cont % sz;
auto it = xrr.begin();
for (int i = 0; i < y; i++)
{
it++;
}
if (i % 2 == 0)y--;
arr[i][*it] = temp;
cont++;
}
xrr.clear();
priority_queue<int>grr;
crr.swap(grr);
memset(brr, 0, sizeof brr);
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
cout << arr[i][j] << ' ';
}
cout << endl;
}
}