#include <bits/stdc++.h>
using namespace std;
inline int read() {
  register int data = 0, w = 1;
  char ch = 0;
  while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
  if (ch == '-') w = -1, ch = getchar();
  while (ch >= '0' && ch <= '9')
    data = (data << 1) + (data << 3) + (ch ^ 48), ch = getchar();
  return data * w;
}
char s[1000005];
int f[1005][1005][2];
const int mod = 1e9 + 7;
void fix(int &x) {
  x -= mod;
  x += x >> 31 & mod;
}
int main() {
  scanf("%s", s + 1);
  int n = strlen(s + 1);
  int ans = 0;
  for (int k = 1; k <= 9; k++) {
    memset(f, 0, sizeof(f));
    f[0][0][1] = 1;
    for (int i = 1; i <= n; i++)
      for (int j = 0; j <= i - 1; j++)
        for (int l = 0; l <= 1; l++) {
          int lim = (l ? s[i] - '0' : 9);
          for (int s = 0; s <= lim; s++)
            fix(f[i][j + (s >= k)][l & (s == lim)] += f[i - 1][j][l]);
        }
    for (int l = 0; l <= 1; l++) {
      int x = 1, s = 1;
      for (int j = 1; j <= n; j++) {
        ans = (ans + 1ll * f[n][j][l] * s) % mod;
        x = 1ll * x * 10 % mod;
        fix(s += x);
      }
    }
  }
  cout << ans << '\n';
  return 0;
}
