#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 700 + 10;
const int mod = 1e9 + 7;
string s;
int f[N][2][10][N];
int g[N];
int n;
int dfs(int cur, bool lim, int d, int cnt) {
  if (cur == n) {
    return g[cnt];
  }
  if (f[cur][lim][d][cnt] != -1) {
    return f[cur][lim][d][cnt];
  }
  int ans = 0;
  int up = lim ? s[cur] - '0' : 9;
  for (int i = 0; i <= up; ++i) {
    ans = (ans + dfs(cur + 1, lim && i == up, d, cnt + (i >= d))) % mod;
  }
  return f[cur][lim][d][cnt] = ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> s;
  memset(f, -1, sizeof f);
  n = s.size();
  for (int i = 1; i <= n; ++i) {
    g[i] = (g[i - 1] * 10ll + 1) % mod;
  }
  int ans = 0;
  for (int i = 1; i < 10; ++i) {
    ans = (ans + dfs(0, true, i, 0)) % mod;
  }
  cout << ans;
}
