g=[1..9]
x=[(i,j)|i<-g,j<-g]
s r
=foldr(\p l
->[m
(p
,n
)r
|r
<-l
,n
<-r p
])r x
m
(p
@(i
,j
),n
)s q
@(x
,y
)|p
==q
=[n
]|x
==i
||y
==j
||e x i
&&e y j
=filter(/=n
)$s q
|True
=s q
Zz1bMS4uOV0KeD1bKGksail8aTwtZyxqPC1nXQptYWluPWludGVyYWN0JChccy0+dW5saW5lc1t1bndvcmRzW3Nob3ckcyhpLGopISEwfGo8LWddfGk8LWddKS5oZWFkLnMuaQpzIHI9Zm9sZHIoXHAgbC0+W20ocCxuKXJ8cjwtbCxuPC1yIHBdKXIgeAplIGEgYj1kaXYoYS0xKTM9PWRpdihiLTEpMwptKHBAKGksaiksbilzIHFAKHgseSl8cD09cT1bbl18eD09aXx8eT09anx8ZSB4IGkmJmUgeSBqPWZpbHRlcigvPW4pJHMgcXxUcnVlPXMgcQppIHM9W2ZvbGRyIG0oXF8tPmcpW3d8dzwtemlwIHgkbWFwIHJlYWQkd29yZHMgcyxzbmQgdz4wXV0=
MCAwIDAgMCAwIDYgMCAwIDAKMCA1IDkgMCAwIDAgMCAwIDgKMiAwIDAgMCAwIDggMCAwIDAKMCA0IDUgMCAwIDAgMCAwIDAKMCAwIDMgMCAwIDAgMCAwIDAKMCAwIDYgMCAwIDMgMCA1IDQKMCAwIDAgMyAyIDUgMCAwIDYKMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDA=
0 0 0 0 0 6 0 0 0
0 5 9 0 0 0 0 0 8
2 0 0 0 0 8 0 0 0
0 4 5 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0
0 0 6 0 0 3 0 5 4
0 0 0 3 2 5 0 0 6
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0