# http://c...content-available-to-author-only...e.com/a/85196/34718
def f(s):
# check dimensions
s=s.split("\n")
h=len(s)
w=len(s[0])
if h*w < 60 or h*w > 749 or w<5 or h<4: return False,"Size"
# top / bottom
e=0
for c in s[0][1:-1]+s[-1][1:-1]:
if(c in"#-")<1:return False,"T/B"
# entrance
if"-"==c:e=1
# no spaces in corners -_-
if" "in s[0][0]+s[0][-1]+s[-1][0]+s[-1][-1]: return False,"Corner"
# light, table, chair
l=t=c=0
# left / right
for r in s[1:-1]:
if(r[0]in"#|")*(r[-1]in"#|")<1: return False,"L/R"
# walls, put above
if" "*5in r: return False,"Walls"
# light
if"$"in r:l=1
# table, chair
if"T"in s[-2]:t=1
if"C"in s[-2]:c=1
if l*t*c<1: return False,"L/T/C"
# wall columns
for r in zip(*s): # Transpose
if" "*5in`r`[2::5]: # Tuple to string
return False,"Walls"
# entrance
if"|"in"".join(s[1:-1])<1>e: return False,"Entrance"
# place to stand
if("#"in s[-1][2:-2])<1: return False,"Stand"
return True
s = """
-####-#####|
#* *** *#
#* $ *#
#**** *** *#
#**T***C* *|
##-------###"""
print f(s[1:])
IyBodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vYS84NTE5Ni8zNDcxOAoKZGVmIGYocyk6CgogICAgIyBjaGVjayBkaW1lbnNpb25zCiAgICBzPXMuc3BsaXQoIlxuIikKICAgIGg9bGVuKHMpCiAgICB3PWxlbihzWzBdKQogICAgaWYgaCp3IDwgNjAgb3IgaCp3ID4gNzQ5IG9yIHc8NSBvciBoPDQ6IHJldHVybiBGYWxzZSwiU2l6ZSIKCiAgICAjIHRvcCAvIGJvdHRvbQogICAgZT0wCiAgICBmb3IgYyBpbiBzWzBdWzE6LTFdK3NbLTFdWzE6LTFdOgogICAgICAgIGlmKGMgaW4iIy0iKTwxOnJldHVybiBGYWxzZSwiVC9CIgoKICAgICAgICAjIGVudHJhbmNlCiAgICAgICAgaWYiLSI9PWM6ZT0xCgogICAgIyBubyBzcGFjZXMgaW4gY29ybmVycyAtXy0KICAgIGlmIiAiaW4gc1swXVswXStzWzBdWy0xXStzWy0xXVswXStzWy0xXVstMV06IHJldHVybiBGYWxzZSwiQ29ybmVyIgoKICAgICMgbGlnaHQsIHRhYmxlLCBjaGFpcgogICAgbD10PWM9MAoKICAgICMgbGVmdCAvIHJpZ2h0CiAgICBmb3IgciBpbiBzWzE6LTFdOgogICAgICAgIGlmKHJbMF1pbiIjfCIpKihyWy0xXWluIiN8Iik8MTogcmV0dXJuIEZhbHNlLCJML1IiCgogICAgICAgICMgd2FsbHMsIHB1dCBhYm92ZQogICAgICAgIGlmIiAiKjVpbiByOiByZXR1cm4gRmFsc2UsIldhbGxzIgoKICAgICAgICAjIGxpZ2h0CiAgICAgICAgaWYiJCJpbiByOmw9MQoKICAgICMgdGFibGUsIGNoYWlyCiAgICBpZiJUImluIHNbLTJdOnQ9MQogICAgaWYiQyJpbiBzWy0yXTpjPTEKCiAgICBpZiBsKnQqYzwxOiByZXR1cm4gRmFsc2UsIkwvVC9DIgoKICAgICMgd2FsbCBjb2x1bW5zCiAgICBmb3IgciBpbiB6aXAoKnMpOiAjIFRyYW5zcG9zZQogICAgICAgIGlmIiAiKjVpbmByYFsyOjo1XTogIyBUdXBsZSB0byBzdHJpbmcKICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCJXYWxscyIKCiAgICAjIGVudHJhbmNlCiAgICBpZiJ8ImluIiIuam9pbihzWzE6LTFdKTwxPmU6IHJldHVybiBGYWxzZSwiRW50cmFuY2UiCgogICAgIyBwbGFjZSB0byBzdGFuZAogICAgaWYoIiMiaW4gc1stMV1bMjotMl0pPDE6IHJldHVybiBGYWxzZSwiU3RhbmQiCgogICAgcmV0dXJuIFRydWUKCnMgPSAiIiIKLSMjIyMtIyMjIyN8CiMqICAgICoqKiAqIwojKiAgICAkICAgKiMKIyoqKiogKioqICojCiMqKlQqKipDKiAqfAojIy0tLS0tLS0jIyMiIiIKCnByaW50IGYoc1sxOl0p