#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long dp[20][20][20];
int a[20];
long long num[20];
long long dfs(int pos, int pre, int sta, bool flag) {
  if (pos == 0) {
    if (pre == sta)
      return 1;
    else
      return 0;
  }
  if (dp[pos][pre][sta] != -1 && !flag) return dp[pos][pre][sta];
  int maxx = flag ? a[pos] : 9;
  long long sum = 0;
  for (int i = 0; i <= maxx; i++) {
    sum += dfs(pos - 1, pre + (i == 4 || i == 7), sta, flag && (i == a[pos]));
  }
  if (!flag) dp[pos][pre][sta] = sum;
  return sum;
}
long long solve(int pos, int res) {
  long long ans = 0;
  if (pos == 7) return 1;
  for (int i = 0; i <= res; i++) {
    if (num[i]) {
      num[i]--;
      ans = (ans + (num[i] + 1) * solve(pos + 1, res - i) % mod) % mod;
      num[i]++;
    }
  }
  return ans;
}
void cal(int x) {
  int len = 0;
  while (x) {
    len++;
    a[len] = x % 10;
    x /= 10;
  }
  for (int i = 0; i <= len; i++) {
    num[i] = dfs(len, 0, i, 1);
  }
  num[0]--;
  long long ans = 0;
  for (int i = 1; i <= len; i++) {
    ans = (ans + num[i] * solve(1, i - 1) % mod) % mod;
  }
  printf("%lld\n", ans);
}
int main() {
  memset(dp, -1, sizeof dp);
  int m;
  scanf("%d", &m);
  cal(m);
}
