R=lambda x,n=4:{str(x),*R([i[::-1]for i inzip(*x)],n-1)}if n elseset()
def B(i):k=[[' #'[int(j)]for j in i[t:t+4]]for t in H(0,16,4)];return[k[0]+[k[1][0]],*[[a,*('#'*3),b]for a,b inzip(k[3][::-1][:-1],k[1][1:])],[k[3][::-1][-1]]+k[2][::-1]]
def L(M):
b=[[' ']*17for _ in H(13)]
for P,(x,y),C inzip(M,[(4,4),(4,0),(0,4),(4,8),(8,4),(4,12)],'#@*&$%'):
for X in H(25):b[x+X//5][y+X%5]=[C,b[x+X//5][y+X%5]][P[X//5][X%5]==' ']
return b
def f(p):
s,*p=[B(i)for i in p.split('\n')];q=[([s],p)]
while q:
M,p=q.pop(0)
iflen(M)==6:return L(M)
for i,a in E(p):
for P in{*R(a),*R([j[::-1]for j in a])}:
ifall((lambda x,y,r,i,R,I:all(0<I<4and A!=B or I in[0,4]and(A!=B or A==' '==B)for I,(A,B)in E(zip([U[x],[*zip(*U[x])]][r][i],[U[y],[*zip(*U[y])]][R][I]))))(*j)for j in[(1,0,1,4,1,0),(2,0,0,4,0,0),(3,0,1,0,1,4),(4,0,0,0,0,4),(5,3,1,0,1,4),(1,2,0,0,1,0),(2,3,1,4,0,0),(3,4,0,4,1,4),(1,4,0,4,1,0),(1,5,1,0,1,4),(2,5,0,0,0,0),(4,5,0,4,0,4)]if j[0]<len(U:=M+[eval(P)])>j[1]):q+=(U,p[:i]+p[i+1:]),