#include <bits/stdc++.h>
using namespace std;
const int N = 710;
const int mo = (1e9) + 7;
long long f[N][N][10][2];
char s[N];
int check(int x, int i) { return x != 0 ? 9 : (s[i + 1] - '0'); }
int main() {
  scanf("%s", s + 1);
  int len = strlen(s + 1);
  for (int i = 1; i <= 9; i++) f[0][0][i][0] = 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 r = 0; r <= check(l, i); r++)
            f[i + 1][j + (r >= k)][k][l | (r < s[i + 1] - '0')] +=
                f[i][j][k][l],
                f[i + 1][j + (r >= k)][k][l | (r < s[i + 1] - '0')] %= mo;
  long long ans = 0;
  for (int i = 1; i <= 9; i++) {
    long long s = 1;
    for (int j = 1; j <= len; j++) {
      ans += s * (f[len][j][i][0] + f[len][j][i][1]);
      ans %= mo;
      s = (s * 10 + 1) % mo;
    }
  }
  printf("%lld\n", ans);
}
