E=enumerate
def G(g):
while g:
q,s=[(t:=[*g][0])],[t];g-={t}
for x,y in q:
for u in[(x+1,y),(x,y+1),(x,y-1),(x-1,y)]:
if u in g:s+=u,;q+=u,;g-={u}
yield{*s}
def f(b):
B=[[0]*len(i)for i in b]
for i in G({(x,y)for x,r in E(b)for y,v in E(r)if v}):
for j in i:
if~-len([*G(i-{j})]):x,y=j;B[x][y]=1
return B
def to_board(s):
return [[*map(int, i)]for i in filter(None, s.split('\n'))]
s1 = """
11101001
11011101
00000001
11101111
11110101
00011111
10110001
11111111
"""
s1_g = """
01000000
00001001
00000001
00000101
00110000
00010000
00000000
11100000
"""
s2 = """
1111111111111111
1000000000000001
1111111111111101
0000000000000101
1111111111110101
1000000000010101
1011111111010101
1010000001010101
1010111101010101
1010101111010101
1010100000010101
1010111111110101
1010000000000101
1011111111111101
1000000000000001
1111111111111111
"""
s2_g = """
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
"""
s3 = """
1011010001111010
1111111011101101
1110010101001011
1111001110010010
1111010000101001
0111101001000101
0011100111110010
1001110011111110
0101000011100011
1110110101001110
0010100111000110
1000110111011010
0100101000100101
0001010101100011
1001010000111101
1000111011000010
"""
s3_g = """
0000000000111010
1011110001001000
0000000000000011
0000000100010000
0000010000101000
0000001000000100
0000000011000000
1001100000011110
0000000001000010
0110100001000110
0000100101000010
1000100000000000
0100001000000100
0000000100100001
0000010000111000
0000010000000010
"""
print(f(to_board(s1))==to_board(s1_g))
print(f(to_board(s2))==to_board(s2_g))
print(f(to_board(s3))==to_board(s3_g))
RT1lbnVtZXJhdGUKZGVmIEcoZyk6CiB3aGlsZSBnOgogIHEscz1bKHQ6PVsqZ11bMF0pXSxbdF07Zy09e3R9CiAgZm9yIHgseSBpbiBxOgogICBmb3IgdSBpblsoeCsxLHkpLCh4LHkrMSksKHgseS0xKSwoeC0xLHkpXToKICAgIGlmIHUgaW4gZzpzKz11LDtxKz11LDtnLT17dX0KICB5aWVsZHsqc30KZGVmIGYoYik6CiBCPVtbMF0qbGVuKGkpZm9yIGkgaW4gYl0KIGZvciBpIGluIEcoeyh4LHkpZm9yIHgsciBpbiBFKGIpZm9yIHksdiBpbiBFKHIpaWYgdn0pOgogIGZvciBqIGluIGk6CiAgIGlmfi1sZW4oWypHKGkte2p9KV0pOngseT1qO0JbeF1beV09MQogcmV0dXJuIEIKIApkZWYgdG9fYm9hcmQocyk6CglyZXR1cm4gW1sqbWFwKGludCwgaSldZm9yIGkgaW4gZmlsdGVyKE5vbmUsIHMuc3BsaXQoJ1xuJykpXQoKczEgPSAiIiIKMTExMDEwMDEKMTEwMTExMDEKMDAwMDAwMDEKMTExMDExMTEKMTExMTAxMDEKMDAwMTExMTEKMTAxMTAwMDEKMTExMTExMTEKIiIiCnMxX2cgPSAiIiIKMDEwMDAwMDAKMDAwMDEwMDEKMDAwMDAwMDEKMDAwMDAxMDEKMDAxMTAwMDAKMDAwMTAwMDAKMDAwMDAwMDAKMTExMDAwMDAKIiIiCnMyID0gIiIiCjExMTExMTExMTExMTExMTEKMTAwMDAwMDAwMDAwMDAwMQoxMTExMTExMTExMTExMTAxCjAwMDAwMDAwMDAwMDAxMDEKMTExMTExMTExMTExMDEwMQoxMDAwMDAwMDAwMDEwMTAxCjEwMTExMTExMTEwMTAxMDEKMTAxMDAwMDAwMTAxMDEwMQoxMDEwMTExMTAxMDEwMTAxCjEwMTAxMDExMTEwMTAxMDEKMTAxMDEwMDAwMDAxMDEwMQoxMDEwMTExMTExMTEwMTAxCjEwMTAwMDAwMDAwMDAxMDEKMTAxMTExMTExMTExMTEwMQoxMDAwMDAwMDAwMDAwMDAxCjExMTExMTExMTExMTExMTEKIiIiCnMyX2cgPSAiIiIKMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMAoiIiIKczMgPSAiIiIKMTAxMTAxMDAwMTExMTAxMAoxMTExMTExMDExMTAxMTAxCjExMTAwMTAxMDEwMDEwMTEKMTExMTAwMTExMDAxMDAxMAoxMTExMDEwMDAwMTAxMDAxCjAxMTExMDEwMDEwMDAxMDEKMDAxMTEwMDExMTExMDAxMAoxMDAxMTEwMDExMTExMTEwCjAxMDEwMDAwMTExMDAwMTEKMTExMDExMDEwMTAwMTExMAowMDEwMTAwMTExMDAwMTEwCjEwMDAxMTAxMTEwMTEwMTAKMDEwMDEwMTAwMDEwMDEwMQowMDAxMDEwMTAxMTAwMDExCjEwMDEwMTAwMDAxMTExMDEKMTAwMDExMTAxMTAwMDAxMAoiIiIKczNfZyA9ICIiIgowMDAwMDAwMDAwMTExMDEwCjEwMTExMTAwMDEwMDEwMDAKMDAwMDAwMDAwMDAwMDAxMQowMDAwMDAwMTAwMDEwMDAwCjAwMDAwMTAwMDAxMDEwMDAKMDAwMDAwMTAwMDAwMDEwMAowMDAwMDAwMDExMDAwMDAwCjEwMDExMDAwMDAwMTExMTAKMDAwMDAwMDAwMTAwMDAxMAowMTEwMTAwMDAxMDAwMTEwCjAwMDAxMDAxMDEwMDAwMTAKMTAwMDEwMDAwMDAwMDAwMAowMTAwMDAxMDAwMDAwMTAwCjAwMDAwMDAxMDAxMDAwMDEKMDAwMDAxMDAwMDExMTAwMAowMDAwMDEwMDAwMDAwMDEwCiIiIgpwcmludChmKHRvX2JvYXJkKHMxKSk9PXRvX2JvYXJkKHMxX2cpKQpwcmludChmKHRvX2JvYXJkKHMyKSk9PXRvX2JvYXJkKHMyX2cpKQpwcmludChmKHRvX2JvYXJkKHMzKSk9PXRvX2JvYXJkKHMzX2cpKQ==