#include <bits/stdc++.h>
using namespace std;
const int N = 710;
const long long MOD = 1e9 + 7;
long long f[N][N][10][2];
char tmp[N];
int main() {
  scanf("%s", tmp + 1);
  int len = strlen(tmp + 1);
  for (int i = 1; i <= len; ++i) tmp[i] -= '0';
  for (int i = 1; (i << 1) <= len; ++i) swap(tmp[i], tmp[len - i + 1]);
  memset(f, 0, sizeof(f));
  for (int i = 1; i <= 9; ++i) f[0][0][i][1] = 1;
  for (int i = 0; i < len; ++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 <= 9; ++p) {
            (f[i + 1][j + (p >= k)][k]
              [(tmp[i + 1] > p) || (l && (tmp[i + 1] == p))] +=
             f[i][j][k][l]) %= MOD;
          }
        }
      }
    }
  }
  long long ans = 0;
  for (int i = 1; i <= 9; ++i) {
    long long t = 1;
    for (int j = 1; j <= len; ++j, t = (t * 10 + 1) % MOD)
      ans += f[len][j][i][1] * t, ans %= MOD;
  }
  printf("%d\n", (int)ans);
  return 0;
}
