const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
const n = Number(await readline());
const k = Number(await readline());
const lists = [];
while ((line = await readline())) {
lists.push(line.split(" ").map(Number));
}
const windows = [];
for (let i = 0; i < n; i++) {
windows.push([]);
}
let idx = 0;
while (true) {
for (let i = 0; i < lists.length; i++) {
let list = lists[i];
if (list.length >= n) {
const spliceList = list.splice(0, n);
for (let j = 0; j < n; j++) {
windows[j].push(spliceList[j]);
idx++;
if (idx == n * k) break;
}
if (idx == n * k) break;
} else {
let length = list.length;
let spliceList = list.splice(0, list.length);
let j = i + 1;
while (
length < n &&
lists.filter((list) => list.length > 0).length > 0
) {
const nextList = lists[j];
if (nextList.length >= n - length) {
spliceList = spliceList.concat(nextList.splice(0, n - length));
break;
} else {
spliceList = spliceList.concat(nextList);
length += nextList.length;
nextList.length = 0;
if (j == lists.length - 1) j = 0;
else j++;
}
}
for (let j = 0; j < n; j++) {
windows[j].push(spliceList[j]);
idx++;
if (idx == n * k) break;
}
if (idx == n * k) break;
}
}
if (idx == n * k) break;
}
console.log(windows.map((window) => window.join(" ")).join(" "));
})();