def s(n):
return ((n % 9) + 1) * (10 ** (n // 9)) - 1
def S():
i = 1
m = 0
while True:
m += ((i % 9) + 1) * (10 ** (i // 9)) - 1
i += 1
yield m
def fib():
a, b, i = 1, 0, 1
while True:
a, b, i = a + b, a, i + 1
yield i, a
def Sf(n):
r = fib()
t = S()
m = 0
ii = 0
while True:
i, fi = next(r)
if i > n: break
ai = fi - ii - 1
if ai > 0:
for _ in range(ai):
next(t)
m += next(t)
ii = fi
return m
print(Sf(90) % 1000000007)
ZGVmIHMobik6CiAgICByZXR1cm4gKChuICUgOSkgKyAxKSAqICgxMCAqKiAobiAvLyA5KSkgLSAxCmRlZiBTKCk6CiAgICBpID0gMQogICAgbSA9IDAKICAgIHdoaWxlIFRydWU6CiAgICAgICAgbSArPSAoKGkgJSA5KSArIDEpICogKDEwICoqIChpIC8vIDkpKSAtIDEKICAgICAgICBpICs9IDEKICAgICAgICB5aWVsZCBtCmRlZiBmaWIoKToKICAgIGEsIGIsIGkgPSAxLCAwLCAxCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGEsIGIsIGkgPSBhICsgYiwgYSwgaSArIDEKICAgICAgICB5aWVsZCBpLCBhCmRlZiBTZihuKToKICAgIHIgPSBmaWIoKQogICAgdCA9IFMoKQogICAgbSA9IDAKICAgIGlpID0gMAogICAgd2hpbGUgVHJ1ZToKICAgICAgICBpLCBmaSA9IG5leHQocikKICAgICAgICBpZiBpID4gbjogYnJlYWsKICAgICAgICBhaSA9IGZpIC0gaWkgLSAxCiAgICAgICAgaWYgYWkgPiAwOgogICAgICAgICAgICBmb3IgXyBpbiByYW5nZShhaSk6CiAgICAgICAgICAgICAgICBuZXh0KHQpCiAgICAgICAgbSArPSBuZXh0KHQpCiAgICAgICAgaWkgPSBmaQogICAgcmV0dXJuIG0KCnByaW50KFNmKDkwKSAlIDEwMDAwMDAwMDcpCg==