#include<bits/stdc++.h>
using namespace std;
vector<int> primes= {2};
void get_primes(int N) {
for(int i=3; i<=N; i++) {
if(i%2==0)
continue;
else {
bool flag=true;
for(int j=2,n=sqrt(i); j<=n; j++) {
if(i%j==0) {
flag=false;
break;
}
}
if(flag) primes.push_back(i);
}
}
}
int main() {
int N;
while(cin>>N) {
get_primes(N);
int sum=0;
for(int i=0,n=primes.size(); i<n-1; i++) {
if(primes[i+1]-primes[i]<=2) {
sum++;
//cout<<primes[i]<<" "<<primes[i+1]<<endl;
}
}
cout<<sum<<endl;
}
return 0;
}
/*oj样例代码*/
#include<bits/stdc++.h>
using namespace std;
using LL=long long;
const int MAXN = 1e6 + 10;
vector<int> primes = {2, 3};
void init() {
for (int k = primes.back()+2; k <= MAXN; k += 2) {
bool flag = true;
for (auto p:primes) {
if (p * p > k)break;
if (k % p == 0) {
flag = false;
break;
}
}
if (flag)primes.push_back(k);
}
}
int main() {
init();
for (int n; cin >> n;) {
int tot = 0;
for (size_t i = 0; i < primes.size() - 1; i++) {
if (primes[i + 1] > n)break;
if (primes[i + 1] - primes[i] <= 2) {
cout << primes[i] << " " << primes[i + 1] << endl;
++tot;
}
}
cout << tot << endl;
}
return 0;
}