#include <bits/stdc++.h>
using namespace std;
string m;
int mem[12][12][3];
int sum(int r, int c, bool eq) {
  if (r == m.size()) {
    return c == 0 ? 1 : 0;
  }
  if (mem[r][c][eq] != -1) return mem[r][c][eq];
  int res = 0;
  if (!eq) {
    for (int i = 0; i < 10; i++) {
      if ((i == 4 || i == 7)) {
        if (c > 0) res += sum(r + 1, c - 1, 0);
      } else
        res += sum(r + 1, c, 0);
    }
  } else {
    int d = m[r] - '0';
    for (int i = 0; i < d; i++) {
      if ((i == 4 || i == 7)) {
        if (c > 0) res += sum(r + 1, c - 1, 0);
      } else
        res += sum(r + 1, c, 0);
    }
    if (d == 4 || d == 7) {
      if (c > 0) res += sum(r + 1, c - 1, 1);
    } else
      res += sum(r + 1, c, 1);
  }
  return mem[r][c][eq] = res;
}
int main() {
  int n;
  cin >> n;
  m = "";
  for (int i = 0; i < 10; i++) {
    m += char('0' + n % 10);
    n /= 10;
  }
  long long cnt[11] = {0};
  reverse(m.begin(), m.end());
  for (int i = 0; i < 10; i++) {
    memset(mem, -1, sizeof mem);
    cnt[i] = sum(0, i, 1);
  }
  cnt[0]--;
  long long ans = 0;
  long long temp = 0;
  int mod = 1000000007;
  for (int a = 0; a < 10; a++) {
    for (int b = 0; b < 10; b++)
      for (int c = 0; c < 10; c++)
        for (int d = 0; d < 10; d++)
          for (int e = 0; e < 10; e++)
            for (int f = 0; f < 10; f++)
              for (int g = 0; g < 10; g++) {
                if (a <= b + c + d + e + f + g) continue;
                temp = 1;
                temp *= cnt[a];
                temp %= mod;
                cnt[a]--;
                temp *= cnt[b];
                temp %= mod;
                cnt[b]--;
                temp *= cnt[c];
                temp %= mod;
                cnt[c]--;
                temp *= cnt[d];
                temp %= mod;
                cnt[d]--;
                temp *= cnt[e];
                temp %= mod;
                cnt[e]--;
                temp *= cnt[f];
                temp %= mod;
                cnt[f]--;
                temp *= cnt[g];
                temp %= mod;
                cnt[g]--;
                cnt[a]++;
                cnt[b]++;
                cnt[c]++;
                cnt[d]++;
                cnt[e]++;
                cnt[f]++;
                cnt[g]++;
                ans += temp;
                ans %= mod;
              }
  }
  cout << ans << endl;
  return 0;
}
