#include <bits/stdc++.h>
using namespace std;
int m, t, cnt[15];
char s[15];
long long ret, MOD = 1000000007;
void add(int x, int y, int S) {
  if (!x)
    cnt[y] += S;
  else
    add(x - 1, y, S * 8), add(x - 1, y + 1, S * 2);
}
void dfs(int x, int S, long long C) {
  if (S > 9) return;
  if (x == 6) {
    for (int i = (S + 1); i < (11); i++) ret = (ret + C * cnt[i]) % MOD;
  } else
    for (int i = (0); i < (11); i++)
      if (cnt[i]) {
        cnt[i]--;
        dfs(x + 1, S + i, C * (cnt[i] + 1) % MOD);
        cnt[i]++;
      }
}
int main() {
  scanf("%s", s);
  m = strlen(s);
  for (int i = (0); i < (m); i++) {
    for (int j = (0); j < (s[i] - '0'); j++)
      add(m - i - 1, t + (j == 4 || j == 7), 1);
    t += s[i] == '4' || s[i] == '7';
  }
  ++cnt[t], --cnt[0];
  dfs(0, 0, 1);
  printf("%I64d\n", ret);
  return 0;
}
