#GLOBAL
FIRST = 0
def CheckDots(stringIN):
count = 0
isFound = False
index = len(str(stringIN))
for i in range(index):
if (stringIN[i]=='.')&(i==0):
return False
if (stringIN[i] == '.')|(stringIN[i]== '@'):
if (count < 1) & (isFound == True):# & (stringIN[i-2]!='@'):
return False
isFound = True
count = 0
elif isFound == True:
count += 1
if (1<count<4)&(index-count-FIRST-2<=20):
return True
return False
def CheckMonkey(stringIN):
count = 0
findDot = False
countDot = 0
for i in range(len(str(stringIN))):
if (findDot == True):
if stringIN[i]!='.':
countDot+=1
else:
if(countDot<1): #& (stringIN[i-2]!='@'):
return False
findDot = False
if stringIN[i] == '@':
if(i>20)|(i==0):
return False
global FIRST
FIRST = i
count+=1
findDot = True
if (count == 1) & (findDot == False):
return True
else:
return False
def FindSpace(stringIN):
for i in range(len(str(stringIN))):
if stringIN[i] == ' ':
return True
return False
def CheckSpelling(stringIN):
for i in range(len(str(stringIN))):
value = ord(stringIN[i])
if ((ord('a')<=value<=ord('z'))|(ord('A')<=value<=ord('Z'))|(ord('0')<=value<=ord('9'))|(value==ord('@'))|(value==ord('_'))|(value==ord('.')))==False:
return False
return True
n = int(raw_input())
for i in range(n):
stringIN = str(raw_input())
if(CheckSpelling(stringIN) == True)&(CheckMonkey(stringIN) == True)&(CheckDots(stringIN) == True)&(FindSpace(stringIN) == False):
print 'Tak'
else:
print 'Nie'
I0dMT0JBTApGSVJTVCA9IDAKCmRlZiBDaGVja0RvdHMoc3RyaW5nSU4pOgogICAgY291bnQgPSAwCiAgICBpc0ZvdW5kID0gRmFsc2UKICAgIGluZGV4ID0gbGVuKHN0cihzdHJpbmdJTikpCiAgICBmb3IgaSBpbiByYW5nZShpbmRleCk6CiAgICAgICAgaWYgKHN0cmluZ0lOW2ldPT0nLicpJihpPT0wKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgKHN0cmluZ0lOW2ldID09ICcuJyl8KHN0cmluZ0lOW2ldPT0gJ0AnKToKICAgICAgICAgICAgaWYgKGNvdW50IDwgMSkgJiAoaXNGb3VuZCA9PSBUcnVlKTojICYgKHN0cmluZ0lOW2ktMl0hPSdAJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgaXNGb3VuZCA9IFRydWUKICAgICAgICAgICAgY291bnQgPSAwCiAgICAgICAgZWxpZiBpc0ZvdW5kID09IFRydWU6CiAgICAgICAgICAgIGNvdW50ICs9IDEKICAgIGlmICgxPGNvdW50PDQpJihpbmRleC1jb3VudC1GSVJTVC0yPD0yMCk6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIHJldHVybiBGYWxzZQoKZGVmIENoZWNrTW9ua2V5KHN0cmluZ0lOKToKICAgIGNvdW50ID0gMAogICAgZmluZERvdCA9IEZhbHNlCiAgICBjb3VudERvdCA9IDAKICAgIGZvciBpIGluIHJhbmdlKGxlbihzdHIoc3RyaW5nSU4pKSk6CiAgICAgICAgaWYgKGZpbmREb3QgPT0gVHJ1ZSk6CiAgICAgICAgICAgIGlmIHN0cmluZ0lOW2ldIT0nLic6CiAgICAgICAgICAgICAgICBjb3VudERvdCs9MQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYoY291bnREb3Q8MSk6ICMmIChzdHJpbmdJTltpLTJdIT0nQCcpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgICAgZmluZERvdCA9IEZhbHNlCiAgICAgICAgaWYgc3RyaW5nSU5baV0gPT0gJ0AnOgogICAgICAgICAgICBpZihpPjIwKXwoaT09MCk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgZ2xvYmFsIEZJUlNUCiAgICAgICAgICAgIEZJUlNUID0gaQogICAgICAgICAgICBjb3VudCs9MQogICAgICAgICAgICBmaW5kRG90ID0gVHJ1ZQogICAgaWYgKGNvdW50ID09IDEpICYgKGZpbmREb3QgPT0gRmFsc2UpOgogICAgICAgIHJldHVybiBUcnVlCiAgICBlbHNlOgogICAgICAgIHJldHVybiBGYWxzZQogICAgCmRlZiBGaW5kU3BhY2Uoc3RyaW5nSU4pOgogICAgZm9yIGkgaW4gcmFuZ2UobGVuKHN0cihzdHJpbmdJTikpKToKICAgICAgICBpZiBzdHJpbmdJTltpXSA9PSAnICc6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCmRlZiBDaGVja1NwZWxsaW5nKHN0cmluZ0lOKTogIAogICAgZm9yIGkgaW4gcmFuZ2UobGVuKHN0cihzdHJpbmdJTikpKToKICAgICAgICB2YWx1ZSA9IG9yZChzdHJpbmdJTltpXSkKICAgICAgICBpZiAoKG9yZCgnYScpPD12YWx1ZTw9b3JkKCd6JykpfChvcmQoJ0EnKTw9dmFsdWU8PW9yZCgnWicpKXwob3JkKCcwJyk8PXZhbHVlPD1vcmQoJzknKSl8KHZhbHVlPT1vcmQoJ0AnKSl8KHZhbHVlPT1vcmQoJ18nKSl8KHZhbHVlPT1vcmQoJy4nKSkpPT1GYWxzZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKCm4gPSBpbnQocmF3X2lucHV0KCkpCgpmb3IgaSBpbiByYW5nZShuKToKICAgIHN0cmluZ0lOID0gc3RyKHJhd19pbnB1dCgpKQogICAgaWYoQ2hlY2tTcGVsbGluZyhzdHJpbmdJTikgPT0gVHJ1ZSkmKENoZWNrTW9ua2V5KHN0cmluZ0lOKSA9PSBUcnVlKSYoQ2hlY2tEb3RzKHN0cmluZ0lOKSA9PSBUcnVlKSYoRmluZFNwYWNlKHN0cmluZ0lOKSA9PSBGYWxzZSk6CiAgICAgICAgcHJpbnQgJ1RhaycKICAgIGVsc2U6CiAgICAgICAgcHJpbnQgJ05pZSc=