def foo(n):
# stackoverflow.com/a/4601480/849891
p2 = 1 # current power of 2
p3 = 1 # current power of 3
e3 = 0 # exponent of current power of 3
t = 1 # number less than or equal to the current power of 2
while t < n:
p2 *= 2
if p3 * 3 < p2:
p3 *= 3
e3 += 1
t += 1 + e3
candidates = [p2]
c = p2
for i in range(e3):
c /= 2
c *= 3
if c > p2: c /= 2
candidates.append(c)
return sorted(candidates)[n - (t - len(candidates))]
print( foo(100))
print( foo(10000))
print( foo(1000))
ZGVmIGZvbyhuKToKCSMgc3RhY2tvdmVyZmxvdy5jb20vYS80NjAxNDgwLzg0OTg5MQogIHAyID0gMSAjIGN1cnJlbnQgcG93ZXIgb2YgMgogIHAzID0gMSAjIGN1cnJlbnQgcG93ZXIgb2YgMwogIGUzID0gMCAjIGV4cG9uZW50IG9mIGN1cnJlbnQgcG93ZXIgb2YgMwogIHQgPSAxICMgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgY3VycmVudCBwb3dlciBvZiAyCiAgd2hpbGUgdCA8IG46CiAgICBwMiAqPSAyCiAgICBpZiBwMyAqIDMgPCBwMjoKICAgICAgcDMgKj0gMwogICAgICBlMyArPSAxCiAgICB0ICs9IDEgKyBlMwogIGNhbmRpZGF0ZXMgPSBbcDJdCiAgYyA9IHAyCiAgZm9yIGkgaW4gcmFuZ2UoZTMpOgogICAgYyAvPSAyCiAgICBjICo9IDMKICAgIGlmIGMgPiBwMjogYyAvPSAyCiAgICBjYW5kaWRhdGVzLmFwcGVuZChjKQogIHJldHVybiBzb3J0ZWQoY2FuZGlkYXRlcylbbiAtICh0IC0gbGVuKGNhbmRpZGF0ZXMpKV0gCiAgICAgICAgIApwcmludCggZm9vKDEwMCkpCnByaW50KCBmb28oMTAwMDApKQpwcmludCggZm9vKDEwMDApKQ==