#include <bits/stdc++.h>

using namespace std;

const int NMax = 100;

int v[NMax][NMax];
int whatBox[NMax][NMax];
bool row[NMax][NMax];
bool col[NMax][NMax];
bool box[NMax][NMax];

int main() {
    freopen("test.in", "r", stdin);

    int n;
    cin >> n;


    int cnt = 0;
    for(int i = 1; i <= n * n; i++) {
        for(int j = 1; j <= n * n; j++) {
            if(whatBox[i][j] == 0) {
                cnt++;

                for(int k = i; k < i + n; k++) {
                    for(int p = j; p < j + n; p++) {
                        whatBox[k][p] = cnt;
                    }
                }
            }
        }
    }

    int zeros = 0;
    for(int i = 1; i <= n * n; i++) {
        for(int j = 1; j <= n * n; j++) {
            cin >> v[i][j];

            if(v[i][j] != 0) {
                row[i][v[i][j]] = true;
                col[j][v[i][j]] = true;
                box[whatBox[i][j]][v[i][j]] = true;
            } else {
                zeros++;
            }
        }
    }

    while(zeros != 0) {
        int lastZero = zeros;
        for(int i = 1; i <= n * n; i++) {
            for(int j = 1; j <= n * n; j++) {
                if(v[i][j] == 0) {
                    for(int pick = 1; pick <= n * n; pick++) {
                        if(row[i][pick] == false && col[j][pick] == false && box[whatBox[i][j]][pick] == false) {
                            int ways = 0;
                            for(int pos = 1; pos <= n * n; pos++) {
                                if(pos != i) {
                                    if(box[whatBox[pos][j]][pick] == false && row[pos][pick] == false && col[j][pick] == false) {
                                        ways++;
                                    }
                                }
                            }

                            if(ways == 0) {
                                v[i][j] = pick;
                                box[whatBox[i][j]][pick] = true;
                                row[i][pick] = true;
                                col[j][pick] = true;
                                i = 0;
                                j = n * n;
                                zeros--;
                                continue;
                            }

                            ways = 0;
                            for(int pos = 1; pos <= n * n; pos++) {
                                if(pos != j) {
                                    if(box[whatBox[i][pos]][pick] == false && row[i][pick] == false && col[pos][pick] == false) {
                                        ways++;
                                    }
                                }
                            }

                            if(ways == 0) {
                                v[i][j] = pick;
                                box[whatBox[i][j]][pick] = true;
                                row[i][pick] = true;
                                col[j][pick] = true;
                                i = 0;
                                j = n * n;
                                zeros--;
                                continue;
                            }
                        }
                    }
                }
            }
        }

        for(int i = 1; i <= n * n; i++) {
            for(int j = 1; j <= n * n; j++) {
                if(v[i][j] == 0) {
                    int nowBox = whatBox[i][j];

                    for(int pick = 1; pick <= n * n; pick++) {
                        if(box[nowBox][pick] == true || row[i][pick] == true || col[j][pick] == true) continue;

                        int ways = 0;
                        for(int k = 1; k <= n * n; k++) {
                            for(int p = 1; p <= n * n; p++) {
                                if(v[p][k] == 0 && whatBox[p][k] == nowBox && row[k][pick] == false && col[p][pick] == false) {
                                    ways++;
                                }
                            }
                        }

                        if(ways == 1) {
                            v[i][j] = pick;
                            box[nowBox][pick] = true;
                            row[i][pick] = true;
                            col[j][pick] = true;
                            i = n * n;
                            j = n * n;
                            zeros--;
                            pick = n * n;
                        }
                    }
                }
            }
        }

        if(lastZero == zeros) break;
    }

    for(int i = 1; i <= n * n; i++) {
        for(int j = 1; j <= n * n; j ++) {
            cout << v[i][j] << " ";
        }
        cout << "\n";
    }
    return 0;
}