#include <bits/stdc++.h>
using namespace std;
long long mpow(long long a, long long b) {
long long ans = 1;
while(b) {
if(b&1) ans *= a;
a *= a;
b >>= 1;
}
return ans;
}
int main() {
//freopen("inp14.txt", "r", stdin);
//freopen("out14.txt", "w", stdout);
int t = 1;
//cin >> t;
while(t--) {
int n;
cin >> n;
long long int msks[n + 1], ans = 0;
memset(msks, 0, sizeof(msks));
for(int i = 2; i <= n; i++)
for(int j = 1; j < i; j++)
if(!(i%j))
msks[i] ^= (1LL<<(j - 1));
for(int i = 0; i < (1LL<<(n/3)); i++) {
long long int now = 0;
bool badsub = 0;
for(int j = 1; j <= n/3; j++)
if((i&msks[j]) && (i&(1LL<<(j - 1)))) now ^= (1LL<<(j - 1));
for(int j = 1; j <= n/3; j++)
if((now&msks[j]) && (i&(1LL<<(j - 1)))) badsub = 1;
if(badsub) continue;
vector<bool> bad(n + 1, 0);
for(int j = 1; j <= n/3; j++) {
if(now&(1LL<<(j - 1))) {
for(int k = j + j; k <= n; k+=j)
bad[k] = 1;
}
}
int s1 = n - n/3, s2 = 0;
for(int j = n/3 + 1; j <= n; j++)
if(bad[j]) s1--;
for(int j = n/3 + 1; j <= n/2; j++) {
if((i&msks[j]) && !bad[j]) {
if(!bad[2*j]) s1 -= 2, s2++;
}
}
ans += mpow(2, s1)*mpow(3, s2);
}
cout << ans << "\n";
}
}