#include<iostream>
#include<vector>
using namespace std;
int count=0;
bool check(vector<vector<int>>sudoko,int row,int col,int num,int n){
    for(int i=0;i<n;i++){
        if(sudoko[row][i]==num){
            return false;
        }
    }
    for(int i=0;i<n;i++){
        if(sudoko[i][col]==num){
            return false;
        }
    }
    
    int strow=row-(row%3);
    int stcol=col-(col%3);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(sudoko[i+strow][j+stcol]==num){
                return false;
            }
        }
    }
    return true;
}
bool solve(vector<vector<int>>sudoko,int row,int col){
    int n=sudoko.size();
    count++;
    if(row==n-1 && col==n){
        return true;
    }
    if(col==n){
        row++;
        col=0;
    }
    if(sudoko[row][col]!=0){
        return solve(sudoko,row,col+1);
    }
    for(int num=1;num<=9;num++){
        if(check(sudoko,row,col,num)){
            sudoko[row][col]==num;
            if(check(sudoko,row,col+1,num)){
                return true;
            }
            sudoko[row][col]==0;
        }
        
    }
    return false;
}
int main(){
    int n=9;
    vector<vector<int>>sudoko;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            sudoko[i][j];
        }
    }
    solve(sudoko,0,0);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<sudoko[i][j]<<" ";
        }
    }
    return 0;
}