/*
TASK:mink
LANG:C++
*/
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> razloji(int w){
  vector<int> ret;
  while(w%2==0){w/=2;ret.push_back(2);}
  int i,ub=min((int)(sqrt(w)+2),w);
  for(i=3;i<ub;i+=2){
   if(i>=w)break;
   while(w%i==0){w/=i;ret.push_back(i);}
                    }
  if(w>1)ret.push_back(w);
  return ret;
}
int dp[1010];
int solve(int w){
  if(w<2)return 0;
  if(w==2)return 1;
  if(dp[w]!=-1)return dp[w];
  vector<int> R=razloji(w);
  if(R.size()==1)return (dp[w]=(1+solve(w-1)));
  int ans=0;
  for(int i=0;i<R.size();++i)ans+=solve(R[i]);
  return (dp[w]=ans);
}
int main(){
  int N;
  for(int i=0;i<1010;++i)dp[i]=-1;
  cin>>N;
  cout<<solve(N)<<'\n';
  return 0;
}
