#include const int Mod = 1000000007; long long pow[100001]; long long recursion(int l, char N[]) { if (N[0] == 0 || N[0] == '0') return 0; else return (recursion(l - 1, &(N[1])) * (N[0] - '0' - 1) + pow[l-1] * (N[0] - '0') * (N[0] - '0' + 1) / 2) % Mod; } int main() { char N[100001]; scanf("%s", N); int i, l; for (i = 1, pow[0] = 1; i <= 100000; i++) pow[i] = pow[i-1] * 45 % Mod; for (l = 0; N[l] != 0; l++); printf("%lld\n", recursion(l, N)); fflush(stdout); return 0; }