def display(d):
print '\n'.join([''.join(str(q) for q in p) for p in d])
print '-----'
def tick(d):
e = [x[:] for x in d]
r=range(-4,4)
for i in r:
e[i]=list(e[i])
for y in r:
for x in r:
c=[d[y-1][x-1],d[y-1][x],d[y-1][x+1],d[y][x-1],d[y][x+1],d[y+1][x-1],d[y+1][x],d[y+1][x+1]].count('■')
if c<2 or c>3:
e[y][x]='□'
elif c==3:
e[y][x]='■'
d = e
display(d)
return d
d=[['□','□','□','□','□','□','□','□'],['□','□','■','□','□','□','□','□'],['□','□','□','■','□','□','□','□'],['□','■','■','■','□','□','□','□'],['□','□','□','□','□','□','□','□'],['□','□','□','□','□','□','□','□'],['□','□','□','□','□','□','□','□'],['□','□','□','□','□','□','□','□']]
for i in range(3):
d = tick(d)
ZGVmIGRpc3BsYXkoZCk6CiBwcmludCAnXG4nLmpvaW4oWycnLmpvaW4oc3RyKHEpIGZvciBxIGluIHApIGZvciBwIGluIGRdKQogcHJpbnQgJy0tLS0tJwoKZGVmIHRpY2soZCk6CiBlID0gW3hbOl0gZm9yIHggaW4gZF0KIHI9cmFuZ2UoLTQsNCkKIGZvciBpIGluIHI6CiAgZVtpXT1saXN0KGVbaV0pCiBmb3IgeSBpbiByOgogIGZvciB4IGluIHI6CiAgIGM9W2RbeS0xXVt4LTFdLGRbeS0xXVt4XSxkW3ktMV1beCsxXSxkW3ldW3gtMV0sZFt5XVt4KzFdLGRbeSsxXVt4LTFdLGRbeSsxXVt4XSxkW3krMV1beCsxXV0uY291bnQoJ+KWoCcpCiAgIGlmIGM8MiBvciBjPjM6CiAgICBlW3ldW3hdPSfilqEnCiAgIGVsaWYgYz09MzoKICAgIGVbeV1beF09J+KWoCcKIGQgPSBlCiBkaXNwbGF5KGQpCiByZXR1cm4gZAoKZD1bWyfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnXSxbJ+KWoScsJ+KWoScsJ+KWoCcsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoSddLFsn4pahJywn4pahJywn4pahJywn4pagJywn4pahJywn4pahJywn4pahJywn4pahJ10sWyfilqEnLCfilqAnLCfilqAnLCfilqAnLCfilqEnLCfilqEnLCfilqEnLCfilqEnXSxbJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoSddLFsn4pahJywn4pahJywn4pahJywn4pahJywn4pahJywn4pahJywn4pahJywn4pahJ10sWyfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnLCfilqEnXSxbJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoScsJ+KWoSddXQoKZm9yIGkgaW4gcmFuZ2UoMyk6CiBkID0gdGljayhkKQ==