a=List()
for i in range(100000): a.append(i)
print a.first
0
print a.second
1
print a.third
2
print a.twentieth
19
print a.twentysecond
21
print a.onehundredthirtyfifth
134
print a.onethousandfivehundredthirtyeighth
1537
"""
def __getattr__(self,name):
if name.endswith('first'): name = name[:-5]+'one'
elif name.endswith('second'): name = name[:-6]+'two'
elif name.endswith('third'): name = name[:-5]+'three'
elif name.endswith('fth'): name = name[:-3]+'ve'
elif name.endswith('hth'): name = name[:-3]+'th'
elif name.endswith('ieth'): name = name[:-4]+'y'
elif name.endswith('th'): name = name[:-2]
subs = [
("eleven","+11"),
("twelve","+12"),
("thirteen","+13"),
("fourteen","+14"),
("fiftheen","+15"),
("sixteen","+16"),
("seventeen","+17"),
("eighteen","+18"),
("nineteen","+19"),
("ten","+10"),
("twenty","+20"),
("thirty","+30"),
("fourty","+40"),
("fifty","+50"),
("sixty","+60"),
("seventy","+70"),
("eighty","+80"),
("ninety","+90"),
("one","+1"),
("two","+2"),
("three","+3"),
("four","+4"),
("five","+5"),
("six","+6"),
("seven","+7"),
("eigth","+8"),
("nine","+9"),
("ten","+10"),
("hundred",")*100+("),
("thousand",")*1000+("),
("million",")*1000000+("),
("billion",")*1000000000+("),
("trillion",")*100000000000+("),
("and","")]
for key,value in subs: name = name.replace(key,value)
if '(' in name: name='('+name+')'
name.replace('()','1')
## parser
import re
tokenizer = re.compile('\+|\(\+|\(|\)|\*|[\d]+')
stack = [0]
while name:
token = tokenizer.match(name)
if not token: raise AttributeError
if token.group() in ('(','(+'): stack.append(0)
if token.group().isdigit(): stack.append(int(token.group()))
if token.group() in ')+' and len(stack)>1: stack[-2:]=[stack[-1]+stack[-2]]
if token.group()=='*':
name = name[1:]
token = tokenizer.match(name)
if not token or not token.group().isdigit(): raise AttrbuteError
stack[-1:]=[stack[-1]*int(token.group())]
name = name[token.end():]
number = sum(stack)
## end parser
try: return self[number-1]
except: raise IndexError