# Problem03-2(Mine Field)
###### tags: `week8` `answer`
```python=1
alist =[]
import sys
for line in sys.stdin:
alist.append(list(map(int,line.split())))
m =len(alist)
n=len(alist[0])
anslist = [[0 for _ in range(n)] for _ in range(m)]
def check(i,j):
global m,n
if 0<= i<m and 0<=j<n:
return True
return False
def surround(i,j):
return [(i-1,j-1),(i,j-1),(i+1,j-1),(i-1,j),(i,j),(i+1,j),(i-1,j+1),(i,j+1),(i+1,j+1)]
def change(i,j,d):
global alist
for k in surround(i,j):
if check(*k):
alist[k[0]][k[1]] += d
def negative(i,j,alist):
k = surround(i,j)
for w in k:
if check(*w):
if alist[w[0]][w[1]] <0:
return True
return False
def turn(alist,x,y):
global m,n
li = [0]
if x == m-1:
if y>1:
li.append(alist[x][y-2])
if x>=1:
if y>=2:
li.append(alist[x-1][y-2])
if x>=2:
if y == 0:
li.extend(alist[x-2][n-2:n])
return set(li)
def p(alist):
for k in alist:
print(k)
print('')
def go(start,anslist):
global m,n,alist
x = start//n
y = start%m
if turn(alist,x,y) != {0}:
return
if negative(x,y,alist):
return
if start ==m*n+1:
p(anslist)
exit()
go(start+1,anslist)
change(x,y,-1)
anslist[x][y]=1
go(start+1,anslist)
change(x,y,1)
anslist[x][y]=0
if start == 0:
print(-1)
quit()
return
go(0,anslist)
```