from collections import defaultdict
from math import factorial,floor, sqrt, log, e
from operator import mul
def factor(n):
p=defaultdict(int)
r = n
while r > 1:
if not r % 2:
c=2
else:
c=3
while r % c > 0:
c+=2
p[c]+=1
r /= c
return [k**v for k,v in p.iteritems()]
def biggest_n(n):
return max([(n, sum(factor )) for n in xrange(lower , upper ) if sum(factor ) <= i])[0]
primes = (lambda b: [x for x in range(2,b) if not [t for t in range(2,x) if not x%t]])
upper = (lambda i: e**(1.06*sqrt(i*log(i,e))))
def lower(n):
p=primes
x=[1]
while sum <=i:
if not p:
x.append
break
x.append(p.pop )
return reduce(mul, x[:-1])
print biggest_n(10)
raw_input('/end')