#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <tuple>
#include <vector>

using namespace std;
typedef long long ll;

#define rep(i, n) for (ll i = 0; i < (n); i++)
#define reps(i, f, n) for (ll i = (f); i < (n); i++)
#define repr(i, n) for (ll i = n; i >= 0; i--)
#define repv(v) for (auto it = (v).begin(); it != (v).end(); it++)
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define pb push_back
#define INIT    \
    cin.tie(0); \
    ios::sync_with_stdio(false);

template <class T>
inline bool chmax(T& a, T b) {
    return a = (a < b) ? b : a;
}
template <class T>
inline bool chmin(T& a, T b) {
    return a = (a > b) ? b : a;
}

ll const INF = 1LL << 60;
ll const MOD = 1000000007;

struct mint {
    ll x;  // typedef long long ll;
    mint(ll x = 0) : x((x % MOD + MOD) % MOD) {}

    mint operator-() const { return mint(-x); }

    mint& operator+=(const mint a) {
        if ((x += a.x) >= MOD) x -= MOD;
        return *this;
    }

    mint& operator-=(const mint a) {
        if ((x += MOD - a.x) >= MOD) x -= MOD;
        return *this;
    }

    mint& operator*=(const mint a) {
        (x *= a.x) %= MOD;
        return *this;
    }

    mint operator+(const mint a) const { return mint(*this) += a; }

    mint operator-(const mint a) const { return mint(*this) -= a; }

    mint operator*(const mint a) const { return mint(*this) *= a; }

    mint pow(ll t) const {
        if (!t) return 1;
        mint a = pow(t >> 1);
        a *= a;
        if (t & 1) a *= *this;
        return a;
    }

    // for prime mod
    mint inv() const { return pow(MOD - 2); }
    mint& operator/=(const mint a) { return *this *= a.inv(); }
    mint operator/(const mint a) const { return mint(*this) /= a; }
};
istream& operator>>(istream& is, const mint& a) { return is >> a.x; }
ostream& operator<<(ostream& os, const mint& a) { return os << a.x; }

map<ll, ll> prime_factor(ll n) {
    map<ll, ll> res;
    for (ll i = 2; i * i <= n; i++) {
        while (n % i == 0) {
            ++res[i];
            n /= i;
        }
    }

    if (n != 1) res[n] = 1;

    return res;
}

int main() {
    INIT;

    ll N;
    cin >> N;

    map<ll, ll> res;
    reps(i, 1, N + 1) {
        map<ll, ll> tmp = prime_factor(i);

        for (auto e : tmp) {
            res[e.first] += e.second;
        }
    }

    ll ans = 0;
    vector<ll> cnt;
    for (auto e : res) {
        cnt.pb(e.second);
    }

    // repv(cnt) { cout << *it << " "; }
    // cout << endl;

    rep(i, SZ(cnt)) {
        if (cnt[i] >= 74) ans++;
    }

    rep(i, SZ(cnt)) {
        if (cnt[i] >= 24) {
            rep(j, SZ(cnt)) {
                if (i == j) continue;
                if (cnt[j] >= 2) ans++;
            }
        }
    }
    // cout << ans << endl;

    rep(i, SZ(cnt)) {
        if (cnt[i] >= 14) {
            rep(j, SZ(cnt)) {
                if (i == j) continue;
                if (cnt[j] >= 4) ans++;
            }
        }
    }
    // cout << ans << endl;

    rep(i, SZ(cnt)) {
        if (cnt[i] >= 4) {
            reps(j, i + 1, SZ(cnt)) {
                if (cnt[j] >= 4) {
                    rep(k, SZ(cnt)) {
                        if (i == k || j == k) continue;
                        if (cnt[k] >= 2) ans++;
                    }
                }
            }
        }
    }
    cout << ans << endl;

    return 0;
}

Measured memory_bytes: 3608