#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int ad(int x, int y) {
  x += y;
  return x >= mod ? x - mod : x;
}
int sb(int x, int y) {
  x -= y;
  return x < 0 ? x + mod : x;
}
int mu(int x, int y) { return 1ll * x * y % mod; }
void up(int &x, int y) {
  x += y;
  if (x >= mod) x -= mod;
}
char ss[705];
int n, ANS;
int f[705][705][10][2];
int dfs(int i, int j, int x, int cmp) {
  if (x == 10) return 0;
  if (i > n) return (j == 0);
  int &ans = f[i][j][x][cmp];
  if (ans != -1 && (!cmp)) return ans;
  ans = 0;
  int rr = cmp ? ss[i] - '0' : 9;
  for (int nt = 0; nt <= rr; nt++) {
    up(ans, dfs(i + 1, max(0, j - (nt >= x)), x, cmp & (nt == rr)));
  }
  return ans;
}
int main() {
  scanf("%s", &ss[1]);
  n = strlen(ss + 1);
  memset(f, -1, sizeof f);
  for (int x = 1; x <= 9; x++) {
    int pw = x;
    for (int i = 1; i <= n; i++) {
      up(ANS, mu(pw, sb(dfs(1, i, x, 1), dfs(1, i, x + 1, 1))));
      pw = mu(pw, 10);
    }
  }
  printf("%d", ANS);
}
