#include <bits/stdc++.h>
using namespace std;
string x;
int a[705], n, f[705][705][10][2], ans;
inline int Mod(int u) { return u < 1000000007 ? u : u - 1000000007; }
int main() {
  cin >> x, n = x.size();
  for (int i = 1; i <= n; ++i) a[i] = x[i - 1] - '0';
  for (int i = 1; i <= 9; ++i) f[0][0][i][0] = 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 l = 0; l <= 1; ++l)
          for (int q = 0; q <= (l ? 9 : a[i + 1]); ++q)
            f[i + 1][j + (q >= k)][k][l | (q < a[i + 1])] = Mod(
                f[i + 1][j + (q >= k)][k][l | (q < a[i + 1])] + f[i][j][k][l]);
  for (int i = 1, tp = 1; i <= 9; ++i, tp = 1)
    for (int j = 1; j <= n; ++j)
      ans =
          Mod(ans + 1ll * tp * Mod(f[n][j][i][0] + f[n][j][i][1]) % 1000000007),
      tp = (tp * 10ll + 1) % 1000000007;
  printf("%d\n", ans);
  return 0;
}
