#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int m, cnt[12][12];
int calc2(int n, int k, int add = 0) {
  if (n == 0) return k == 0;
  if (n < k) return 0;
  if (cnt[n][k] != -1 && add == 0) return cnt[n][k];
  long long mod = 1;
  for (int i = 1; i < n; ++i) mod *= 10;
  int ans = 0;
  for (int i = 0; i < 10; ++i) {
    if (add + i * mod > m) break;
    int cur_k = k - (i == 4 || i == 7);
    if (add + mod * (i + 1) <= m)
      ans = (ans + calc2(n - 1, cur_k, 0)) % MOD;
    else
      ans = (ans + calc2(n - 1, cur_k, add + mod * i)) % MOD;
  }
  if (add == 0) cnt[n][k] = ans;
  return ans;
}
int cnt2[12][12];
int calc(int s, int k = 6) {
  if (s < 0) return 0;
  if (k == 0) return s == 0;
  int ans = 0;
  for (int i = 0; i <= s; ++i) {
    int cur_calc = calc2(11, i);
    if (i == 0) cur_calc -= 1;
    if (cur_calc > 0) {
      cnt[11][i]--;
      ans = (ans + 1LL * cur_calc * calc(s - i, k - 1)) % MOD;
      cnt[11][i]++;
    }
  }
  cnt2[s][k] = ans;
  return ans;
}
bool solve() {
  if (scanf("%d", &m) == EOF) return false;
  memset(cnt, -1, sizeof(cnt));
  memset(cnt2, -1, sizeof(cnt2));
  int ans = 0;
  for (int i = 1; i <= 11; ++i)
    for (int j = 0; j < i; ++j)
      ans = (ans + 1LL * calc(j) * calc2(11, i)) % MOD;
  printf("%d\n", ans);
  return true;
}
int main() {
  solve();
  return 0;
}
