#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"; } }