#include #include #include using ll = long long; int main() { int N; std::cin >> N; std::vector is_prime(N * 3 + 1, true); std::vector primes; for (int p = 2; p <= N * 3; p++) { if (!is_prime[p]) continue; primes.push_back(p); if (p >= N * 3 / p) continue; for (int k = p * p; k <= N * 3; k += p) is_prime[k] = false; } std::vector fps(N + 1); for (int p : primes) { if (p <= N) fps[p] = 1; else break; } std::vector comp = atcoder::convolution_ll(fps, fps); comp = atcoder::convolution_ll(comp, fps); for (int p : primes) { if (p > N) break; for (int q : primes) { if (q > N) break; comp[p + p + q] -= 3; } } int64_t result = 0; for (int p : primes) result += comp[p]; result /= 6; std::cout << result << std::endl; }