unittest
{
	assert( [ "9" ].parse.expand.solve == 0 );
	assert( [ "10" ].parse.expand.solve == 1 );
	assert( [ "100" ].parse.expand.solve == 543 );
}



import std.conv;
import std.range;
import std.stdio;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto n = input.front.to!( long );
	return tuple( n );
}

auto solve( long n )
{
	// n!を素因数分解
	long[ long ] nps;
	auto ps = 100.primes;
	foreach( i; 1L .. n + 1 )
	{
		foreach( f; i.primefactorize( ps ) )
		{
			nps[ f ]++;
		}
	}
	
	// 素因数からいくつか選んで七五数を作る
	// 75を素因数分解すると5*5*3になる
	// つまり、素因数を3種類選んで a^^(5-1) * b^^(5-1) * c^^(3-1) が成り立つなら約数がちょうど75個の数になる
	// （種類ばらばらに13個選ぶとダメ。例えば、2^^2=8は約数が1,2,4の3個になるが、2*3=6は約数が1,2,3,6の4個で増えてしまう）
	// 同様に a^^(5*5-1) * b^^(3-1) と a^^(5*3-1) * b^^(5-1) と a^^(5*5*3-1) のパターンも数える
	auto f2 = 0L;
	auto f4 = 0L;
	auto f14 = 0L;
	auto f24 = 0L;
	auto f74 = 0L;
	foreach( c; nps )
	{
		f2 += ( 2 <= c );
		f4 += ( 4 <= c );
		f14 += ( 14 <= c );
		f24 += ( 24 <= c );
		f74 += ( 74 <= c );
	}
	
	// 素因数の組み合わせ数を計算
	return ( f4 * ( f4 - 1 ) * ( f2 - 2 ) / 2 ) + ( f24 * ( f2 - 1 ) ) + ( f14 * ( f4 - 1 ) ) + ( f74 );
}

// 素数列
auto primes( long x )
{
	Appender!( long[] ) ps;
	if( x < 2 ) return ps.data;
	
	auto cs = new bool[]( x + 1 );
	ps ~= 2L;
	for( auto i = 3L; i * i < cs.length; i += 2 )
	{
		if( cs[ i ] ) continue;
		for( auto j = i; i * j < cs.length; j++ )
		{
			cs[ i * j ] = true;
		}
	}
	for( auto i = 3L; i < cs.length; i += 2 )
	{
		if( !cs[ i ] ) ps ~= i;
	}
	return ps.data;
}

// 素因数分解
auto primefactorize( long x, long[] ps )
{
	Appender!( long[] ) fs;
	if( x < 2 ) return fs.data;
	
	auto s = ( cast( long ) x ^^ 0.5 ) + 1;
	foreach( p; ps )
	{
		if( s < p ) break;
		while( x % p == 0 )
		{
			x /= p;
			fs ~= p;
		}
		if( x < 2 ) break;
	}
	if( 2 <= x ) fs ~= x;
	return fs.data;
}
