#include #include #include using namespace std; typedef long long LL; const int N = 300010; int n, freq[N], ma; LL ans; vector primes; bool is_prime[N]; void SievePrime(int sz) { fill(is_prime, is_prime + sz, true); is_prime[0] = is_prime[1] = false; for (int i = 2; i <= sz; ++i) { if (is_prime[i]) primes.push_back(i); for (auto p : primes) { if (1LL * i * p > sz) continue; is_prime[i * p] = false; if (i % p == 0) break; } } } int main() { scanf("%d", &n); SievePrime(n * 3); ans = 0LL; for (int i = 2; i < primes.size() && primes[i] <= n; ++i) { int c = primes[i]; int b = primes[i - 1]; for (int j = 0; j < i - 1; ++j) { int a = primes[j]; ++freq[a + b]; } for (int j = 0; j < primes.size() && primes[j] <= 3 * c; ++j) { int sum = primes[j]; if (sum - c >= 0) { ans += freq[sum - c]; } } } printf("%lld\n", ans); return 0; }