#include "bits/stdc++.h"
#include <chrono>
#include <tuple>
#include <string>
#include <random>
#include <cstdio>
#define ll long long int
// #define endl '\n'
#define pb push_back
#define mp make_pair
#define rep(i,n) for(ll i=0;i<n;i++)
#define vi vector <int>
#define vs vector <string>
#define vc vector <char>
#define vl vector <ll>
#define pll pair<ll, ll>
#define pint pair<int, int>
#define S second
#define F first
#define all(c) (c).begin(),(c).end()
using namespace std; 
ll max(ll a, ll b){ if(a>b)return a;return b;}
ll min(ll a, ll b){ if(a < b) return a;return b;}
const int N = 100001;
vector<int> adj[N];
ll mod = 1000000007;
#define MAXN   1000001 

int spf[MAXN]; 
  
// Calculating SPF (Smallest Prime Factor) for every 
// number till MAXN. 
// Time Complexity : O(nloglogn) 
void sieve() 
{ 
    spf[1] = 1; 
    for (int i=2; i<MAXN; i++) 
  
        // marking smallest prime factor for every 
        // number to be itself. 
        spf[i] = i; 
  
    // separately marking spf for every even 
    // number as 2 
    for (int i=4; i<MAXN; i+=2) 
        spf[i] = 2; 
  
    for (int i=3; i*i<MAXN; i++) 
    { 
        // checking if i is prime 
        if (spf[i] == i) 
        { 
            // marking SPF for all numbers divisible by i 
            for (int j=i*i; j<MAXN; j+=i) 
  
                // marking spf[j] if it is not  
                // previously marked 
                if (spf[j]==j) 
                    spf[j] = i; 
        } 
    } 
} 
  
// A O(log n) function returning primefactorization 
// by dividing by smallest prime factor at every step 


vector<int> getFactorization(int x) 
{ 
    vector<int> ret; 
    while (x != 1) 
    { 
        ret.push_back(spf[x]); 
        x = x / spf[x]; 
    } 
    return ret; 
} 

void solve() 
{
    
    int n;
    cin>>n;

    ll ans = 0;

    for(int i = 1; i < n; i++)
    {
        ll rem = n - i;
        vi p = getFactorization(rem);

        if(rem == 1)
        {
            ans++;
            continue;
        }
        
        ll tmp = 1;

        int cnt = 1;

        for(int j = 1; j < p.size(); j++)
        {
            if(p[j] == p[j-1])
            {
                cnt++;
            }
            else
            {
                
                tmp *= (cnt + 1);
                cnt = 1;
            }
        }

        tmp *= (cnt + 1);

        // ll t = 0;

        // for(int j = 1; j <= sqrt(rem); j++)
        // {
        //     if(rem%j == 0)
        //     {
        //         if(rem/j == j) t++;
        //         else t+=2;
        //     }
        // }

        // if(t != tmp)
        // {
        //     cout<<"Here";
        // }



        // cout<<rem<<" "<<tmp<<" "<<t<<endl;


        ans += tmp;
    }

    cout<<ans<<endl;
}

int main()
{
    sieve();
    #ifndef ONLINE_JUDGE
        // for getting input from input.txt
        freopen("input.txt", "r", stdin);
        // for writing output to output.txt
        freopen("output.txt", "w", stdout);
    #endif

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int T=1;
    // cin>>T;
    int t=0;
    while(t++<T)
    {
        // cout<<"Case #"<<t<<":"<<' ';
        solve();
        // cout<<'\n';
    }

    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
}


Measured memory_bytes: 9984