#include <bits/stdc++.h>
using namespace std;
const int maxn = 700 + 2;
const int mod = 1e9 + 7;
const int ten = 10;
int len, ans;
char str[maxn];
int dp[maxn][maxn][ten][2];
int change(char ch) { return ch - '0'; }
void DP() {
  for (int i = 0; i <= 9; i++) dp[0][0][i][1] = 1;
  for (int i = 0; i < len; i++)
    for (int j = 0; j <= i; j++)
      for (int k = 0; k <= 9; k++)
        for (int type = 0; type <= 1; type++)
          if (dp[i][j][k][type])
            for (int l = 0; l <= (type == 0 ? 9 : change(str[i + 1])); l++) {
              dp[i + 1][j + (l >= k)][k][type & (l == change(str[i + 1]))] =
                  (dp[i + 1][j + (l >= k)][k]
                     [type & (l == change(str[i + 1]))] +
                   dp[i][j][k][type]) %
                  mod;
            }
}
int main() {
  scanf("%s", str + 1);
  len = strlen(str + 1);
  DP();
  int now = 1;
  for (int i = 1; i <= len; i++) {
    for (int j = 1; j <= 9; j++)
      ans =
          (ans + 1LL * now * (dp[len][i][j][0] + dp[len][i][j][1]) % mod) % mod;
    now = (1LL * now * 10 + 1) % mod;
  }
  printf("%d", ans);
  return 0;
}
