// Original C++ solution (slower):
#include <bits/stdc++.h>



using namespace std;



typedef long long ll;

typedef unsigned long long ull;

typedef pair<ll, ll> P;

typedef vector<ll> V;

typedef complex<double> Point;



#define PI acos(-1.0)

#define EPS 1e-10

const ll INF = 1e16;

const ll MOD = 1e9 + 7;



#define FOR(i,a,b) for(int i=(a);i<(b);i++)

#define rep(i,N) for(int i=0;i<(N);i++)

#define ALL(s) (s).begin(),(s).end()

#define EQ(a,b) (abs((a)-(b))<EPS)

#define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) )

#define fi first

#define se second

#define N_SIZE (1LL << 20)

#define NIL -1



ll sq(ll num) { return num*num; }

ll mod_pow(ll x, ll n) {

	if (n == 0)return 1;

	if (n == 1)return x%MOD;

	ll res = sq(mod_pow(x, n / 2));

	res %= MOD;

	if (n % 2 == 1) {

		res *= x;

		res %= MOD;

	}

	return res;

}

ll mod_add(ll a, ll b) { return (a + b) % MOD; }

ll mod_sub(ll a, ll b) { return (a - b + MOD) % MOD; }

ll mod_mul(ll a, ll b) { return a*b % MOD; }



int n;



map<int, int> prime_facter(ll n){

	map<int, int> 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(){

	cin >> n;

	vector<ll> cnt(100,0);

	FOR(i,1,n){

		map<int,int> m = prime_facter(i+1);

		rep(j,100)cnt[j] += m[j];

	}

	sort(ALL(cnt));

	reverse(ALL(cnt));

	vector<ll> sum(1000,0);

	rep(i,cnt.size())sum[cnt[i]]++;

	for(int i = 999;i >= 0;i--)sum[i] += sum[i+1];

	ll ans = 0;

	ans += sum[4]*(sum[4]-1)/2*(sum[2]-2);

	ans += sum[14] * (sum[4]-1);

	ans += sum[24] * (sum[2]-1);

	ans += sum[74];

	cout << ans << endl;

}

// Optimized solution to the same problem (faster):
#include <bits/stdc++.h>



using namespace std;



typedef long long ll;

typedef unsigned long long ull;

typedef pair<ll, ll> P;

typedef complex<double> Point;



#define PI acos(-1.0)

#define EPS 1e-10

const ll INF = 1e16;

const ll MOD = 1e9 + 7;



#define FOR(i,a,b) for(ll i=(a);i<(b);i++)

#define rep(i,N) for(ll i=0;i<(N);i++)

#define ALL(s) (s).begin(),(s).end()

#define EQ(a,b) (abs((a)-(b))<EPS)

#define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) )

#define fi first

#define se second

#define N_SIZE (1LL << 20)

#define NIL -1



ll mod_add(ll a, ll b) { return (a + b) % MOD; }

ll mod_sub(ll a, ll b) { return (a - b + MOD) % MOD; }

ll mod_mul(ll a, ll b) { return a*b % MOD; }



map<int, int> prime_facter(ll n){

    map<int, int> 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 n;



int main(){

    cin >> n;

    map<int,int> m;

    FOR(i,1,n){

        map<int,int> buf = prime_facter(i+1);

        for(auto it = buf.begin();it != buf.end();it++){

            m[it->first] += it->second;

        }

    }

    ll ans = 0;

    vector<ll> v;

    for(auto it = m.begin();it != m.end();it++){

        // cout << it->first << " " << it->second << endl;

        v.push_back(it->second);

    }

    sort(ALL(v));

    reverse(ALL(v));

    ll num[5] = {};

    rep(i,v.size()){

        if(v[i] >= 74)num[0]++;

        if(v[i] >= 24)num[1]++;

        if(v[i] >= 14)num[2]++;

        if(v[i] >= 4)num[3]++;

        if(v[i] >= 2)num[4]++;

    }

    cout << num[0] + num[1] * (num[4] - 1) + num[2] * (num[3] - 1) + num[3] * (num[3] - 1) * (num[4] - 2) / 2 << endl;

}

// Fastest known solution for this problem: