#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair P; int n; vector prime; bool isprime[300001]; void sieve(){ for(int i=3; i<=3*n; i+=2){ isprime[i]=1; } isprime[2]=1; prime.push_back(2); for(int i=3; i<=3*n; i++){ if(isprime[i]){ prime.push_back(i); for(int j=2*i; j<=3*n; j+=i){ isprime[j]=0; } } } return; } int main() { cin>>n; sieve(); ll ct1[200001]={}, ct2[200001]={}, ct3=0; for(int i=0; prime[i]<=n; i++){ for(int j=0; prime[j]<=n; j++){ ct1[prime[i]+prime[j]]++; if(isprime[2*prime[i]+prime[j]]) ct3+=3; } } for(int i=0; prime[i]<=n; i++){ for(int j=i+1; prime[j]-prime[i]<=2*n; j++){ ct2[prime[j]-prime[i]]++; } } ll ans=0; for(int i=1; i<=2*n; i++){ ans+=ct1[i]*ct2[i]; } cout<<(ans-ct3)/6<