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