''' dp[i][j][k]:= i桁目まで見て、 2の倍数がj (0..2) 5の倍数がk (0..2)の個数 ''' MOD = 10 ** 9 + 7 N = input() LN = len(N) dp = [[[0] * 3 for _ in range(3)] for _ in range(LN)] dp[0][0][0] = 1 sum0 = 0 for i in range(LN - 1): for j in range(1, 10): jn = [0,0] if j % 4 == 0: jn = [2, 0] elif j % 2 == 0: jn = [1, 0] elif j % 5 == 0: jn = [0, 1] for k in range(3): for l in range(3): k2 = min(2, k + jn[0]) l2 = min(2, l + jn[1]) dp[i + 1][k2][l2] += dp[i][k][l] dp[i + 1][k2][l2] %= MOD sum0 += dp[i + 1][2][2] sum0 %= MOD acn = [0, 0] for i, n in enumerate(N): n = int(n) ni = LN - i - 1 Y = [[0] * 3 for _ in range(3)] for j in range(3): for k in range(3): j2 = min(2, j + acn[0]) k2 = min(2, k + acn[1]) Y[j2][k2] += dp[ni][j][k] Y[j2][k2] %= MOD Z = [[0] * 3 for _ in range(3)] dummy = 0 if i == LN - 1: n = n + 1 for j in range(1, n): jn = [0, 0] if j % 4 == 0: jn = [2, 0] elif j % 2 == 0: jn = [1, 0] elif j % 5 == 0: jn = [0, 1] for k in range(3): for l in range(3): k2 = min(2, k + jn[0]) l2 = min(2, l + jn[1]) Z[k2][l2] += Y[k][l] Z[k2][l2] %= MOD sum0 += Z[2][2] sum0 %= MOD if n % 4 == 0: acn[0] = min(2, acn[0] + 2) elif n % 2 == 0: acn[0] = min(2, acn[0] + 1) elif n % 5 == 0: acn[1] = min(2, acn[1] + 1) print(sum0)