#include <bits/stdc++.h>
using namespace std;
const long long P = 1e9 + 7;
int n, a[705];
char s[705];
long long Pow[705][11];
int main() {
  cin >> s, n = strlen(s);
  for (int i = (1); i <= (n); i++) a[i] = s[n - i] - 48;
  int i = 1;
  while (a[i] == 9) a[i++] = 0;
  a[i]++;
  if (i > n) n++;
  reverse(a + 1, a + n + 1);
  for (int i = (1); i <= (10); i++) Pow[0][i] = 1;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (10); j++)
      Pow[i][j] = Pow[i - 1][j] * (100 - 9 * j) % P;
  int idx[11] = {};
  long long as = 0;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (9); j++) {
      (as += Pow[idx[j]][10] * Pow[n - i][j] % P *
                 (10 * max(a[i] - j, 0) + min(a[i], j)) -
             a[i] * Pow[n - i][10]) %= P;
      idx[j] += a[i] >= j;
    }
  cout << (as * 111111112 % P + P) % P;
  return 0;
}
