#include <bits/stdc++.h>
const long long MaxN = 7e2 + 10;
const long long mod = 1e9 + 7;
char s[MaxN];
long long n, a[MaxN], f[MaxN][MaxN][10][2];
int main() {
  long long ans = 0;
  scanf("%s", s + 1), n = strlen(s + 1);
  for (long long i = 1; i <= n; i++) a[i] = s[i] - '0';
  for (long long i = 0; i <= 9; i++) f[0][0][i][0] = 1;
  for (long long i = 0; i < n; i++)
    for (long long j = 0; j <= i; j++)
      for (long long k = 1; k <= 9; k++)
        for (long long op = 0; op < 2; op++)
          for (long long p = 0; p <= (op ? 9 : a[i + 1]); p++)
            f[i + 1][j + (p >= k)][k][op | (p < a[i + 1])] =
                (((f[i + 1][j + (p >= k)][k][op | (p < a[i + 1])]) +
                  (f[i][j][k][op])) %
                 mod);
  for (long long k = 1; k <= 9; k++) {
    long long tmp = 1;
    for (long long i = 1; i <= n; i++)
      ans =
          (((ans) + (tmp * 1ll * (f[n][i][k][0] + f[n][i][k][1]) % mod)) % mod),
      tmp = (tmp * 10 + 1) % mod;
  }
  printf("%lld\n", ans);
  return 0;
}
