#include <bits/stdc++.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <cstring>
#include <unistd.h>
#include <signal.h>
#include <filesystem>
#include <dirent.h>
#define X first
#define Y second
using namespace std;
using pii = pair<int, int>;
int sudoku[15][15]; // 9 * 9
char buf[1000000];
queue <pii> q;
vector <pii> lists;
bool inside(int i, int j){
if(i >= 0 && i < 9 && j >= 0 && j < 9) return true;
return false;
}
bool checker(int x, int y, int num){
for(int i = 0; i < 9; i++){
if(x == i || sudoku[i][y] == 0) continue;
if(sudoku[i][y] == num) return false;
}
for(int j = 0; j < 9; j++){
if(y == j || sudoku[x][j] == 0) continue;
if(sudoku[x][j] == num) return false;
}
for(int i = x - 1; i <= x + 1; i++){
for(int j = y - 1; j <= y + 1; j++){
if((i == x && j == y) || !inside(i, j) || sudoku[i][j] == 0) continue;
if(sudoku[i][j] == num) return false;
}
}
return true;
}
int solve(int idx){
if(idx == lists.size()) return 1;
printf("cur idx = %d, (%d, %d)n", idx, lists[idx].X, lists[idx].Y);
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++) cout << sudoku[i][j] << " "; cout << endl;
}
cout << "----------------------------n";
for(int i = 1; i <= 9; i++){
if(checker(lists[idx].X, lists[idx].Y, i)){
sudoku[lists[idx].X][lists[idx].Y] = i;
if(solve(idx + 1)) return 1;
sudoku[lists[idx].X][lists[idx].Y] = 0;
}
}
return 0;
}
int main(int argc, char **argv)
{
bzero(buf, sizeof(buf));
scanf("%s", buf);
printf("buf = %sn", buf);
cout << "str len = " << strlen(buf) << endl;
// filling with value 9
int p = 0;
while(buf[p] != '.' && (buf[p] - '0' > 9 || buf[p] - '0' < 0)) p++;
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++) {
if(buf[p] != '.') sudoku[i][j] = buf[p] - '0';
else sudoku[i][j] = 0, lists.emplace_back(i, j);
p++;
}
}
//cout << "debugn";
cout << "ans = " <<solve(0) << "n";
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++) printf("%d ", sudoku[i][j]); printf("n");
}
return 0;
}