def b( a) :j= len ( a[ 0 ] ) ; g= range ; z= g( len ( a) ) ; h= [ i for i in z if '#' in a[ i] ] ; w= [ i for i, c in [ ( i, [ r[ i] for r in a] ) for i in g( j) ] if '#' in c] ; return [ [ any ( ( r< h[ 0 ] , h[ -1 ] < r, c< w[ 0 ] , w[ -1 ] < c) ) and '.' or '#' for c in g( j) ] for r in z]
tests = [ [ [ '#' ] ] ,
[ [ '.' , '.' , '.' ] , [ '#' , '.' , '.' ] , [ '.' , '.' , '.' ] ] ,
[ [ '.' , '.' , '.' ] , [ '#' , '.' , '.' ] , [ '.' , '.' , '#' ] ] ,
[ [ '.' , '#' , '.' ] , [ '#' , '.' , '.' ] , [ '.' , '.' , '#' ] ] ,
[ [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] ] ,
[ [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' ] ] ,
[ [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' ] ] ,
[ [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '#' , '.' , '.' , '#' , '.' , '.' ] , [ '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' ] ] ,
[ [ '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '#' ] , [ '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' , '.' ] , [ '.' , '.' , '.' , '.' , '#' , '.' , '.' , '#' , '.' , '.' ] , [ '.' , '.' , '.' , '#' , '.' , '.' , '.' , '.' , '.' , '.' ] ] ]
for n, test in enumerate ( tests, 1 ) :
print 'Test %d' %n
print '\n ' .join ( '' .join ( r) for r in test )
print
print '\n ' .join ( '' .join ( r) for r in b( test ) )
print
ZGVmIGIoYSk6aj1sZW4oYVswXSk7Zz1yYW5nZTt6PWcobGVuKGEpKTtoPVtpIGZvciBpIGluIHogaWYnIydpbiBhW2ldXTt3PVtpIGZvciBpLGMgaW5bKGksW3JbaV1mb3IgciBpbiBhXSlmb3IgaSBpbiBnKGopXWlmJyMnaW4gY107cmV0dXJuW1thbnkoKHI8aFswXSxoWy0xXTxyLGM8d1swXSx3Wy0xXTxjKSlhbmQnLidvcicjJ2ZvciBjIGluIGcoaildZm9yIHIgaW4gel0KCnRlc3RzID0gW1tbJyMnXV0sCltbJy4nLCcuJywnLiddLFsnIycsJy4nLCcuJ10sWycuJywnLicsJy4nXV0sCltbJy4nLCcuJywnLiddLFsnIycsJy4nLCcuJ10sWycuJywnLicsJyMnXV0sCltbJy4nLCcjJywnLiddLFsnIycsJy4nLCcuJ10sWycuJywnLicsJyMnXV0sCltbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcjJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXV0sCltbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcjJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJyMnLCcuJywnLicsJy4nLCcuJywnLicsJy4nXV0sCltbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnIycsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcjJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJyMnLCcuJywnLicsJy4nLCcuJywnLicsJy4nXV0sCltbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnIycsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcjJywnLicsJy4nLCcjJywnLicsJy4nXSxbJy4nLCcuJywnLicsJyMnLCcuJywnLicsJy4nLCcuJywnLicsJy4nXV0sCltbJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJyMnXSxbJy4nLCcuJywnIycsJy4nLCcuJywnLicsJy4nLCcuJywnLicsJy4nXSxbJy4nLCcuJywnLicsJy4nLCcjJywnLicsJy4nLCcjJywnLicsJy4nXSxbJy4nLCcuJywnLicsJyMnLCcuJywnLicsJy4nLCcuJywnLicsJy4nXV1dCgpmb3IgbiwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgoJcHJpbnQgJ1Rlc3QgJWQnJW4KCXByaW50ICdcbicuam9pbignJy5qb2luKHIpIGZvciByIGluIHRlc3QpCglwcmludAoJcHJpbnQgJ1xuJy5qb2luKCcnLmpvaW4ocikgZm9yIHIgaW4gYih0ZXN0KSkKCXByaW50Cg==