#include <bits/stdc++.h>
using namespace std;
const int N = 705, mod = 1e9 + 7;
int n, ans, f[N][N][12][2], tmp;
char s[N];
void upd(int &x, int y) { x = ((long long)x + y) % mod; }
int main() {
  scanf("%s", s);
  n = strlen(s);
  for (int i = (0); i <= (9); i++) f[0][0][i][1] = 1;
  for (int i = (0); i <= (n - 1); i++)
    for (int j = (0); j <= (i); j++)
      for (int k = (1); k <= (9); k++)
        for (int lim = (0); lim <= (1); lim++)
          if (tmp = f[i][j][k][lim])
            for (int p = 0, ed = lim ? s[i] - '0' : 9; p <= ed; p++)
              upd(f[i + 1][j + (p >= k)][k][lim && (p == ed)], tmp);
  for (int i = 1, j = 1; i <= n; i++, j = (10ll * j + 1) % mod)
    for (int k = (0); k <= (9); k++)
      upd(ans, ((long long)f[n][i][k][0] + f[n][i][k][1]) * j % mod);
  printf("%d\n", ans);
  return 0;
}
