package main
import (
"fmt"
)
func main() {
var maze [10][10]int
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
fmt.Scan(&maze[i][j])
}
}
var do func(x, y int) bool
do = func(x, y int) bool {
if maze[x][y] == 0 {
xx := make(map[int]struct{}, 0)
yy := make(map[int]struct{}, 0)
block := make(map[int]struct{}, 0)
for i := 0; i < 9; i++ {
xx[maze[i][y]] = struct{}{}
yy[maze[x][i]] = struct{}{}
}
for i := 0; i< 3; i++ {
for j := 0; j < 3; j++ {
block[maze[x/3*3 + i][y/3*3+j]] = struct{}{}
}
}
for i := 1; i < 10; i++ {
_, ok1 := xx[i]
_, ok2 := yy[i]
_, ok3 := block[i]
if !ok1 && !ok2 && !ok3{
maze[x][y] = i
if y+1 < 9 {
if do(x, y+1) {
return true
}
} else if x+1 < 9 {
if do(x+1, 0) {
return true
}
} else {
return true
}
maze[x][y] = 0
}
}
} else {
if y+1 < 9 {
if do(x, y+1) {
return true
}
} else if x+1 < 9 {
if do(x+1, 0) {
return true
}
} else {
return true
}
}
return false
}
do(0, 0)
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
fmt.Printf("%d", maze[i][j])
if j < 8 {
fmt.Printf(" ")
} else {
fmt.Println("")
}
}
}
}