#include #include using namespace std; using namespace atcoder; #define rep2(i, m, n) for (int i = (m); i < (n); ++i) #define rep(i, n) rep2(i, 0, n) #define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i) #define drep(i, n) drep2(i, n, 0) typedef long long ll; int main(){ int n; cin >> n; vector f1(n+1); vector g2(2*n+1); vector dp(3*n+1,false); for (int i=2; i<=3*n; i++){ if (!dp[i]){ if (i<=n){ f1[i] += 1; g2[2*i] += 1; } for (int j=2*i; j<=3*n; j+=i){ dp[j] = true; } } } vector f2 = convolution_ll(f1, f1); vector f3 = convolution_ll(f2, f1); vector g3 = convolution_ll(g2, f1); ll ans = 0; for (int i=2; i<=3*n; i++){ if (!dp[i]){ ans += (f3[i] - 3*g3[i])/6; } } cout << ans << endl; }