cache = {}
mod = 1000000009
def ans(n):
if cache.has_key(n):
return cache[n]
if n == 0:
cache[n] = 1
return cache[n]
if n == 1:
cache[n] = 10
return cache[n]
temp1 = ans(n/2)
temp2 = ans(n/2-1)
if (n & 1) == 0:
cache[n] = (temp1*temp1 - temp2*temp2) % mod
else:
temp3 = ans(n/2 + 1)
cache[n] = (temp1 * (temp3 -temp2)) % mod
return cache[n]
print ans(1000000000)
Y2FjaGUgPSB7fQoKbW9kID0gMTAwMDAwMDAwOQoKZGVmIGFucyhuKToKICAgIGlmIGNhY2hlLmhhc19rZXkobik6CiAgICAgICAgcmV0dXJuIGNhY2hlW25dCgogICAgaWYgbiA9PSAwOgogICAgICAgIGNhY2hlW25dID0gMQogICAgICAgIHJldHVybiBjYWNoZVtuXQogICAgaWYgbiA9PSAxOgogICAgICAgIGNhY2hlW25dID0gMTAKICAgICAgICByZXR1cm4gY2FjaGVbbl0KCiAgICB0ZW1wMSA9IGFucyhuLzIpCiAgICB0ZW1wMiA9IGFucyhuLzItMSkKCiAgICBpZiAobiAmIDEpID09IDA6CiAgICAgICAgY2FjaGVbbl0gPSAodGVtcDEqdGVtcDEgLSB0ZW1wMip0ZW1wMikgJSBtb2QKICAgIGVsc2U6CiAgICAgICAgdGVtcDMgPSBhbnMobi8yICsgMSkKICAgICAgICBjYWNoZVtuXSA9ICh0ZW1wMSAqICh0ZW1wMyAtdGVtcDIpKSAlIG1vZAoKICAgIHJldHVybiBjYWNoZVtuXQoKcHJpbnQgYW5zKDEwMDAwMDAwMDApCg==