#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
char ch;
int len, a[705];
int f[705][705][10][2];
int ans;
inline void transform(int &a, int b) {
  a += b;
  a >= mod ? a -= mod : 0;
}
int main() {
  ch = getchar();
  while (ch != '\n') a[++len] = ch - '0', ch = getchar();
  for (register int i = 0; i <= 9; i++) f[0][0][i][0] = 1;
  for (register int i = 0; i < len; i++)
    for (register int j = 0; j <= i; j++)
      for (register int k = 1; k <= 9; k++)
        for (register int l = 0; l <= 1; l++)
          for (register int p = 0; p <= (l ? 9 : a[i + 1]); p++)
            transform(f[i + 1][j + (p >= k)][k][l | (p < a[i + 1])],
                      f[i][j][k][l]);
  for (register int i = 1; i <= 9; i++) {
    int tmp = 1;
    for (register int j = 1; j <= len; j++)
      transform(ans, 1ll * tmp * (f[len][j][i][0] + f[len][j][i][1]) % mod),
          tmp = (10ll * tmp + 1) % mod;
  }
  printf("%d", ans);
  return 0;
}
