public class Euler684 {
    static final long MOD = 1000000007L;

    static long modPow(long a, long e) {
        long r = 1;
        long x = a % MOD;
        long p = e;
        while (p > 0) {
            if ((p & 1L) != 0L) {
                r = (r * x) % MOD;
            }
            p >>= 1L;
            if (p > 0) {
                x = (x * x) % MOD;
            }
        }
        return r;
    }

    static long norm(long v) {
        long res = v % MOD;
        if (res < 0) {
            res += MOD;
        }
        return res;
    }

    static long SMod(long k) {
        long q = k / 9L;
        long r = k % 9L;

        long pow10 = modPow(10L, q);

        long base = 6L * (pow10 - 1L);
        base = norm(base);
        base = norm(base - 9L * norm(q));

        long coeff = norm(r * (r + 3L) / 2L);
        long part = norm(coeff * pow10);
        part = norm(part - r);

        return norm(base + part);
    }

    public static String solve() {
        long[] fib = new long[91];
        fib[0] = 0L;
        fib[1] = 1L;
        for (int i = 2; i <= 90; ++i) {
            fib[i] = fib[i - 1] + fib[i - 2];
        }

        long ans = 0;
        for (int i = 2; i <= 90; ++i) {
            ans = norm(ans + SMod(fib[i]));
        }

        return Long.toString(ans);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
