#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll Maxn=1.6e7+7;
ll n,ans,lim;
ll mu[Maxn],t[Maxn];
vector<ll>prime;
bitset<Maxn>isprime;
map<ll,ll>Mu;
inline void init(ll N){
isprime[1]=mu[1]=1;
for(ll i=2;i<=N;i++){
if(!isprime[i]) prime.push_back(i),mu[i]=-1;
for(auto j:prime){
if(j*i>N) break;
isprime[i*j]=1;
if(i%j) mu[i*j]=-mu[i];
else break;
}
}
for(ll i=1;i<=N;i++) t[i]=t[i-1]+mu[i]*(n/i/i),mu[i]+=mu[i-1];
}
inline ll Getmu(ll x){
if(x<=1.6e7) return mu[x];
if(Mu.count(x)) return Mu[x];
ll res=1;
for(ll l=2,r;l<=x;l=r+1){
r=n/(n/l);
res-=(r-l+1)*Getmu(n/l);
}
return Mu[x]=res;
}
int main(){
scanf("%lld",&n);
init(1.6e7);
ll sq=sqrtl(n);
for(ll l=1,r;l<=sq;l=r+1){
ll w=n/l/l;
r=sqrt(n/w);
ans+=w*(Getmu(r)-Getmu(l-1));
}
printf("%lld",ans);
return 0;
}