from itertools import*
M=[(1,0),(-1,0),(0,-1),(0,1)]
N=int
E=enumerate
def f(b):
Z=eval(str(b));q=[(d:={(x,y):v for x,r in E(b)for y,v in E(r)},{i:0 for i in d if'/'<d[i]<':'})]
for a,b in q:
if[]==(k:=[j for j in b if b[j]!=N(a[j])]):
for(x,y),v in a.items():Z[x][y]=v
return'\n'.join(map(''.join,Z))
t=min(k,key=lambda x:N(a[x]));x,y=t;Q,S=[(N(a[t])-b[t],4,[])],[];W=[]
for X,e,O in Q:
if 1>X:S+=O,;continue
for i in[1,2]:
if X//i*e:Q+=(X-i,e-1,O+[i]),
for O in S:
for D in combinations(M,len(O)):
A,B,F=[],[],1
for o,(X,Y)in zip(O,D):
j,k=x,y;F=1
while F:
if(T:=(j+X,k+Y))not in a:F=0
elif'/'<a[T]<':':
if~N(a[T])+b[T]<o:B+=(T,o),
else:F=0
break
elif' '!=a[T]:F=0
else:j,k=T;A+=(T,'|║-═'[o//2+2*(X==0)]),
if F:W+=({**a,**{T:R for T,R in A}},{**b,**{T:b[T]+R for T,R in B},(x,y):N(a[(x,y)])}),
for i in W:q+=i,
s1 = """
2 2 1
1 4 3
3 2
4
3 2 3
1
3 4 2
"""
s2 = """
2 2 2 2 1 1 2 2 2 2 2
1 3 5 4 4 2
2 2 4 5 5 4 2 2 1 3
2 1 1 3 3 2 2
3 4 4 4 4 5 4 3 2 3
2 4 5 4 2 3
2 1 4 2 4 3 1 1 2
2 1 3 1 1 6 4 2
3 2 4 3 6 3 2
2 2 3 3 2 5 2 4 3
2 1 1 2
1 3 3 3 3 5 8 7 6 5 4
2 3 1 1 2
1 1 5 1 4 5 6 3 1 2
1 1 2 2 3 4
3 5 4 4 3 3 8 7 5 1 2
2 3 1 2 2 1 1
2 2 2 2 5 7 6 3 3
3 3 6 3 5 3 2 2 2 3
2 1 2 3 2 2
3 4 6 4 5 5 3 3 5 1
2 1 2 2 1 1 3
2 1 1 2 3 6 5 2 2
2 3 4 4 4 2 1
2 2 2 2 2 2 2 1 1 3 2
"""
def to_board(s):
return [[*i]for i in filter(None, s.split('\n'))]
print(f(to_board(s1)))
ZnJvbSBpdGVydG9vbHMgaW1wb3J0KgpNPVsoMSwwKSwoLTEsMCksKDAsLTEpLCgwLDEpXQpOPWludApFPWVudW1lcmF0ZQpkZWYgZihiKToKIFo9ZXZhbChzdHIoYikpO3E9WyhkOj17KHgseSk6diBmb3IgeCxyIGluIEUoYilmb3IgeSx2IGluIEUocil9LHtpOjAgZm9yIGkgaW4gZCBpZicvJzxkW2ldPCc6J30pXQogZm9yIGEsYiBpbiBxOgogIGlmW109PShrOj1baiBmb3IgaiBpbiBiIGlmIGJbal0hPU4oYVtqXSldKToKICAgZm9yKHgseSksdiBpbiBhLml0ZW1zKCk6Wlt4XVt5XT12CiAgIHJldHVybidcbicuam9pbihtYXAoJycuam9pbixaKSkKICB0PW1pbihrLGtleT1sYW1iZGEgeDpOKGFbeF0pKTt4LHk9dDtRLFM9WyhOKGFbdF0pLWJbdF0sNCxbXSldLFtdO1c9W10KICBmb3IgWCxlLE8gaW4gUToKICAgaWYgMT5YOlMrPU8sO2NvbnRpbnVlCiAgIGZvciBpIGluWzEsMl06CiAgICBpZiBYLy9pKmU6USs9KFgtaSxlLTEsTytbaV0pLAogIGZvciBPIGluIFM6CiAgIGZvciBEIGluIGNvbWJpbmF0aW9ucyhNLGxlbihPKSk6CiAgICBBLEIsRj1bXSxbXSwxCiAgICBmb3IgbywoWCxZKWluIHppcChPLEQpOgogICAgIGosaz14LHk7Rj0xCiAgICAgd2hpbGUgRjoKICAgICAgaWYoVDo9KGorWCxrK1kpKW5vdCBpbiBhOkY9MAogICAgICBlbGlmJy8nPGFbVF08JzonOgogICAgICAgaWZ+TihhW1RdKStiW1RdPG86Qis9KFQsbyksCiAgICAgICBlbHNlOkY9MAogICAgICAgYnJlYWsKICAgICAgZWxpZicgJyE9YVtUXTpGPTAKICAgICAgZWxzZTpqLGs9VDtBKz0oVCwnfOKVkS3ilZAnW28vLzIrMiooWD09MCldKSwKICAgIGlmIEY6Vys9KHsqKmEsKip7VDpSIGZvciBULFIgaW4gQX19LHsqKmIsKip7VDpiW1RdK1IgZm9yIFQsUiBpbiBCfSwoeCx5KTpOKGFbKHgseSldKX0pLAogIGZvciBpIGluIFc6cSs9aSwKICAKczEgPSAiIiIKMiAyICAxIAogMSAgNCAzCjMgIDIgICAKICAgIDQgIAogMyAyICAzCjEgICAgICAKIDMgIDQgMgoiIiIKczIgPSAiIiIKMiAyIDIgIDIgIDEgMSAyIDIgIDIgIDIgMiAKICAgICAgICAgICAxIDMgNSAgNCAgNCAyICAKMiAgMiA0IDUgIDUgNCAyIDIgIDEgICAgMyAKICAyICAgMSAgMSAzIDMgMiAgICAgICAyICAKICAgMyA0IDQgIDQgNCA1IDQgMyAgMiAgMyAKMiA0IDUgNCAgICAgICAgICAgIDIgICAzICAKIDIgMSAgIDQgMiAgNCAzICAgMSAgMSAgMiAKMiAxIDMgICAgIDEgIDEgIDYgIDQgICAyICAKIDMgMiAgNCAgMyAgNiAzICAgICAgICAgMiAKMiAyIDMgIDMgIDIgICAgIDUgMiAgNCAzICAKIDIgMSAgICAgICAgICAgICAgIDEgICAgMiAKICAxIDMgMyAzIDMgNSA4IDcgNiAgNSA0ICAKMiAgMyAgIDEgMSAyICAgICAgICAgICAgICAKIDEgICAxICA1IDEgICA0IDUgNiAzIDEgMiAKMSAgIDEgIDIgICAgMiAgICAgICAgMyA0ICAKIDMgNSA0ICA0ICAzICAzIDggNyA1IDEgMiAKMiAgICAgIDMgIDEgMiAgMiAgICAgMSAxICAKIDIgICAgICAyICAyICAyIDUgNyA2IDMgMyAKMyAgMyA2IDMgIDUgMyAgMiAgIDIgMiAzICAKIDIgICAgICAgICAgICAxIDIgMyAyICAgMiAKMyAgNCA2ICA0IDUgNSAgMyAzIDUgIDEgICAKIDIgICAgMSAgICAyIDIgIDEgICAxICAzICAKMiAgICAxICAgIDEgMiAzICA2IDUgMiAgMiAKIDIgMyAgNCA0ICA0IDIgICAgICAgICAxICAKMiAyICAyIDIgIDIgMiAyICAxICAxIDMgMiAKIiIiCmRlZiB0b19ib2FyZChzKToKCXJldHVybiBbWyppXWZvciBpIGluIGZpbHRlcihOb25lLCBzLnNwbGl0KCdcbicpKV0KCnByaW50KGYodG9fYm9hcmQoczEpKSk=