#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1, c = getchar();
  while (c < 48) c == '-' && (f = -1), c = getchar();
  while (c > 47) x = x * 10 + c - '0', c = getchar();
  return x * f;
}
const int MAXN = 1005;
const int mod = 1e9 + 7;
int f[MAXN][MAXN][15][2], a[MAXN];
int n, ans;
char s[MAXN];
int main(int argc, char const *argv[]) {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (int i = 1; i <= n; ++i) a[i] = s[i] - '0';
  for (int i = 0; i <= 9; ++i) f[0][0][i][0] = 1;
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j < i; ++j)
      for (int k = 1; k <= 9; ++k)
        for (int l = 0; l <= 1; ++l)
          for (int p = 0; p <= (l ? 9 : a[i]); ++p)
            (f[i][j + (p >= k)][k][l || (p < a[i])] += f[i - 1][j][k][l]) %=
                mod;
  for (int k = 1; k <= 9; ++k)
    for (int i = 1, p = 1; i <= n; ++i, p = (10ll * p + 1) % mod)
      (ans += 1ll * p * (f[n][i][k][0] + f[n][i][k][1]) % mod) %= mod;
  printf("%d\n", ans);
  return 0;
}
