nonIntersect,stripZeroes,isSolved,getColumn,getRow,getBox,addAnswer,sudogrid,sudopoints,basegrid,finalAnswers,twoOp=lambda ar1,ar2: list(set(ar1)-set(ar2)),lambda ar1: filter(lambda x: x!=0,ar1),lambda sudogrid: (not len(filter(lambda x: filter(lambda y: y==0,x),sudogrid)))*1,lambda i: sudogrid[i],lambda j: list((x[j] for x in sudogrid[0:9])),lambda i,j: list((y for x in sudogrid[i:i+3] for y in x[j:j+3])),lambda st: finalAnswers.append({"x":int(st[1])-1,"y":int(st[0])-1}),list(list(int(x) for x in raw_input().split(",")) for x in range(0,9)),list(list([] for y in range(0,9)) for x in range(0,9)),range(0,10),list({"x":int(x),"y":int(y)} for y,x in list(raw_input().split(",") for d in range(0,5))),lambda x,y: x #Ryan Wdef printAnswer(pt): print getRow(pt["x"])[pt["y"]]while isSolved(sudogrid)!=1 or map(printAnswer,finalAnswers)*False: list(sudogrid[x][y]!=0 or sudopoints[x].__setitem__(y,twoOp((nonIntersect(nonIntersect(nonIntersect(basegrid,getColumn(x)),getRow(y)),getBox(int(3*((x/3.0)-((x%3.0)/3.0))),int(3*((y/3.0)-((y%3.0)/3.0)))))),(len(stripZeroes(sudopoints[x][y]))==1 and sudogrid[x].__setitem__(y,sudopoints[x][y][0])))) for x,y in zip(list(x for x in range(0,9) for y in range(0,9)),list(y for x in range(0,9) for y in range(0,9))))####nonIntersect,stripZeroes,isSolved,getColumn,getRow,getBox,addAnswer,sudogrid,sudopoints,basegrid,finalAnswers,twoOp=lambda ar1,ar2: list(set(ar1)-set(ar2)),lambda ar1: filter(lambda x: x!=0,ar1),lambda sudogrid: (not len(filter(lambda x: filter(lambda y: y==0,x),sudogrid)))*1,lambda i: sudogrid[i],lambda j: list((x[j] for x in sudogrid[0:9])),lambda i,j: list((y for x in sudogrid[i:i+3] for y in x[j:j+3])),lambda st: finalAnswers.append({"x":int(st[1])-1,"y":int(st[0])-1}),[],[],range(0,10),[],lambda x,y: x #Ryan W##def printAnswer(pt): print getRow(pt["x"])[pt["y"]]##for i in range(0,1+9+5): ((i==0) and (list(sudogrid.append(list(0 for x in range(0,9))) for x in range(0,9)),list(sudopoints.append(list([] for x in range(0,9))) for x in range(0,9)))) or ((i>0 and i<10) and sudogrid.__setitem__(i-1,list( int(temp) for temp in raw_input().split(',')))) or ((i>=10) and addAnswer(raw_input().split(',')))##while isSolved(sudogrid)!=1 or map(printAnswer,finalAnswers)*False: list(sudogrid[x][y]!=0 or sudopoints[x].__setitem__(y,twoOp((nonIntersect(nonIntersect(nonIntersect(basegrid,getColumn(x)),getRow(y)),getBox(int(3*((x/3.0)-((x%3.0)/3.0))),int(3*((y/3.0)-((y%3.0)/3.0)))))),(len(stripZeroes(sudopoints[x][y]))==1 and sudogrid[x].__setitem__(y,sudopoints[x][y][0])))) for x,y in zip(list(x for x in range(0,9) for y in range(0,9)),list(y for x in range(0,9) for y in range(0,9))))## ##nonIntersect,stripZeroes,isSolved,getColumn,getRow,getBox,addAnswer,sudogrid,sudopoints,basegrid,finalAnswers,twoOp=lambda ar1,ar2: list(set(ar1)-set(ar2)),lambda ar1: filter(lambda x: x!=0,ar1),lambda sudogrid: (not len(filter(lambda x: filter(lambda y: y==0,x),sudogrid)))*1,lambda i: sudogrid[i],lambda j: list((x[j] for x in sudogrid[0:9])),lambda i,j: list((y for x in sudogrid[i:i+3] for y in x[j:j+3])),lambda st: finalAnswers.append({"x":int(st[1])-1,"y":int(st[0])-1}),[],[],range(0,10),[],lambda x,y: x #Ryan W##def printAnswer(pt): print getRow(pt["x"])[pt["y"]]##for i in range(0,1+9+5): ((i==0) and (list(sudogrid.append(list(0 for x in range(0,9))) for x in range(0,9)),list(sudopoints.append(list([] for x in range(0,9))) for x in range(0,9)))) or ((i>0 and i<10) and sudogrid.__setitem__(i-1,list( int(temp) for temp in raw_input().split(',')))) or ((i>=10) and addAnswer(raw_input().split(',')))##while isSolved(sudogrid)!=1 or map(printAnswer,finalAnswers)*False:## for x,y in zip(list(x for x in range(0,9) for y in range(0,9)),list(y for x in range(0,9) for y in range(0,9))): sudogrid[x][y]!=0 or sudopoints[x].__setitem__(y,twoOp((nonIntersect(nonIntersect(nonIntersect(basegrid,getColumn(x)),getRow(y)),getBox(int(3*((x/3.0)-((x%3.0)/3.0))),int(3*((y/3.0)-((y%3.0)/3.0)))))),(len(stripZeroes(sudopoints[x][y]))==1 and sudogrid[x].__setitem__(y,sudopoints[x][y][0]))))## ##nonIntersect,stripZeroes,isSolved,getColumn,getRow,getBox,addAnswer,sudogrid,sudopoints,basegrid,finalAnswers=lambda ar1,ar2: list(set(ar1)-set(ar2)),lambda ar1: filter(lambda x: x!=0,ar1),lambda sudogrid: (not len(filter(lambda x: filter(lambda y: y==0,x),sudogrid)))*1,lambda i: sudogrid[i],lambda j: list((x[j] for x in sudogrid[0:9])),lambda i,j: list((y for x in sudogrid[i:i+3] for y in x[j:j+3])),lambda st: finalAnswers.append({"x":int(st[1])-1,"y":int(st[0])-1}),[],[],range(0,10),[] #Ryan W##def printAnswer(pt): print getRow(pt["x"])[pt["y"]]##for i in range(0,1+9+5): ((i==0) and (list(sudogrid.append(list(0 for x in range(0,9))) for x in range(0,9)),list(sudopoints.append(list([] for x in range(0,9))) for x in range(0,9)))) or ((i>0 and i<10) and sudogrid.__setitem__(i-1,list( int(temp) for temp in raw_input().split(',')))) or ((i>=10) and addAnswer(raw_input().split(',')))##while isSolved(sudogrid)!=1 or (map(printAnswer,finalAnswers)<0)*False:## for x,y in zip(list(x for x in range(0,9) for y in range(0,9)),list(y for x in range(0,9) for y in range(0,9))):## if(sudogrid[x][y]==0): sudopoints[x][y],temp=(nonIntersect(nonIntersect(nonIntersect(basegrid,getColumn(x)),getRow(y)),getBox(int(3*((x/3.0)-((x%3.0)/3.0))),int(3*((y/3.0)-((y%3.0)/3.0)))))),(len(stripZeroes(sudopoints[x][y]))==1 and sudogrid[x].__setitem__(y,sudopoints[x][y][0]))## ##while isSolved(sudogrid)!=1:## for x in range(0,9):## for y in range(0,9):## if(sudogrid[x][y]==0):## sudopoints[x][y]=nonIntersect(nonIntersect(nonIntersect(basegrid,getColumn(x)),getRow(y)),getBox(int(3*((x/3.0)-((x%3.0)/3.0))),int(3*((y/3.0)-((y%3.0)/3.0)))))## if len(stripZeroes(sudopoints[x][y]))==1: sudogrid[x][y]=sudopoints[x][y][0] ##map(printAnswer,finalAnswers)##for x in range(0,9): sudogrid[x]=list( int(temp) for temp in raw_input().split(','))##for x in range(0,5): addAnswer(raw_input().split(','))##for x in range(0,5): addAnswer(raw_input().split(','))####sudogrid=[[0,5,0,0,1,0,0,4,0],##[1,0,7,0,4,0,6,0,2],##[0,0,0,9,0,5,0,0,0],##[2,0,8,6,3,0,5,0,1],##[0,4,0,0,7,0,0,2,0],##[9,0,1,0,8,0,4,0,6],##[0,0,0,4,0,1,0,0,0],##[3,0,4,0,5,8,7,0,9],##[0,2,0,0,6,0,0,1,0]]##finalAnswers=[]##temp=[[4,2],[4,8],[6,2],[3,5],[8,8]]##for x in temp:## finalAnswers.append({"x":int(x[1])-1,"y":int(x[0])-1})