#include <bits/stdc++.h>
const long long mod = 1000000007;
long long dp[11], ans;
int len;
char a[11];
void add(int dep, int dig, int num) {
  if (!dep) {
    dp[dig] += num;
    return;
  }
  add(dep - 1, dig + 1, num * 2);
  add(dep - 1, dig, num * 8);
}
void dfs(int dep, int sum, int tot) {
  int i;
  if (sum >= len) return;
  if (dep == 6) {
    for (i = sum + 1; i <= len; i++) ans = (ans + tot * dp[i]) % mod;
    return;
  }
  for (i = 0; i < len; i++) {
    if (dp[i]) {
      dp[i]--;
      dfs(dep + 1, sum + i, tot * (dp[i] + 1) % mod);
      dp[i]++;
    }
  }
}
int main() {
  int i, j, t = 0;
  len = strlen(gets(a));
  for (i = 0; i < len; i++) {
    for (j = 0; j < a[i] - '0'; j++)
      if (j == 4 || j == 7)
        add(len - 1 - i, t + 1, 1);
      else
        add(len - 1 - i, t, 1);
    if (a[i] == '4' || a[i] == '7') t++;
  }
  dp[t]++, dp[0]--;
  dfs(0, 0, 1);
  printf("%I64d\n", ans);
  return 0;
}
