#include <bits/stdc++.h>
using std::cerr;
using std::cin;
using std::max;
using std::min;
int n, f[705][705][9][2], ans;
char A[705];
int cal(int x) {
  x -= x < 1000000007 ? 0 : 1000000007;
  return x;
}
int main() {
  scanf("%s", A + 1), n = strlen(A + 1);
  for (int i = 0; i < 9; i++) f[0][0][i][1] = 1;
  for (int i = 0, nj, nl; i < n; i++)
    for (int j = 0; j <= i; j++)
      for (int k = 0; k < 9; k++)
        for (int l = 0; l < 2; l++)
          if (f[i][j][k][l])
            for (int s = 0; s <= (l ? A[i + 1] - 48 : 9); s++)
              nj = j + (s > k), nl = l & (s == A[i + 1] - 48),
              f[i + 1][nj][k][nl] = cal(f[i + 1][nj][k][nl] + f[i][j][k][l]);
  for (int i = 1, v = 1; i <= n; v = (10ll * v + 1) % 1000000007, i++)
    for (int j = 0; j < 9; j++)
      ans = (ans + (long long)(f[n][i][j][0] + f[n][i][j][1]) * v) % 1000000007;
  printf("%d\n", ans);
  return 0;
}
