// B I S M I L L A H I R  R A H M A N I R  R A H I M
 #include<bits/stdc++.h>
 using namespace std;

 typedef long long ll;
 typedef int li;
 typedef unsigned long long int ull;
 typedef vector<int> vi;
 typedef vector<ll> vl;
 typedef vector<vi> vvi;
 typedef vector<vl> vvl;
 typedef pair<int,int> pii;
 typedef pair<double, double> pdd;
 typedef pair<ll, ll> pll;
 typedef vector<pii> vii;
 typedef vector<pll> vll;
 typedef double dl;

 #define wt ll t; cin>>t; while(t--)
 #define lp(i, a, b) for(ll i=a; i<b; i++)
 #define rlp(i, a, b) for(ll i=a; i>=b; i--)
 #define PB push_back
 #define F first
 #define S second
 #define MP make_pair
 #define endl '\n'
 #define all(a) (a).begin(),(a).end()
 #define sz(x) (int)x.size()
 #define mid(l,r) ((r+l)/2)
 #define left(node) (node*2)
 #define right(node) (node*2+1)
 #define mx_int_prime 999999937


 const double PI = acos(-1);
 const double eps = 1e-9;
 const int inf = 2000000000;
 const ll infLL = 9000000000000000000;
 #define MOD 1000000007

 #define mem(a,b) memset(a, b, sizeof(a) )
 #define gcd(a,b) __gcd(a,b)
 #define sqr(a) ((a) * (a))

 #define qe() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 #define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);
 #define file() freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);

 typedef vector<int>::iterator vit;
 typedef set<int>::iterator sit;


 int dx[] = {0, 0, +1, -1};
 int dy[] = {+1, -1, 0, 0};
 //int dx[] = {+1, 0, -1, 0, +1, +1, -1, -1};
 //int dy[] = {0, +1, 0, -1, +1, -1, +1, -1};



 template < typename F, typename S >
 ostream& operator << ( ostream& os, const pair< F, S > & p ) {
             return os << "(" << p.first << ", " << p.second << ")";
 }

 template < typename T >
 ostream &operator << ( ostream & os, const vector< T > &v ) {
             os << "{";
                 for(auto it = v.begin(); it != v.end(); ++it) {
                                 if( it != v.begin() ) os << ", ";
                                         os << *it;
                                             }
                     return os << "}";
 }

 template < typename T >
 ostream &operator << ( ostream & os, const set< T > &v ) {
             os << "[";
                 for(auto it = v.begin(); it != v.end(); ++it) {
                                 if( it != v.begin() ) os << ", ";
                                         os << *it;
                                             }
                     return os << "]";
 }

 template < typename T >
 ostream &operator << ( ostream & os, const multiset< T > &v ) {
             os << "[";
                 for(auto it = v.begin(); it != v.end(); ++it) {
                                 if( it != v.begin() ) os << ", ";
                                         os << *it;
                                             }
                     return os << "]";
 }

 template < typename F, typename S >
 ostream &operator << ( ostream & os, const map< F, S > &v ) {
             os << "[";
                 for(auto it = v.begin(); it != v.end(); ++it) {
                                 if( it != v.begin() ) os << ", ";
                                         os << it -> first << " = " << it -> second ;
                                             }
                     return os << "]";
 }

 #define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)

 void faltu () {
             cerr << endl;
 }

 template <typename T>
 void faltu( T a[], int n ) {
             for(int i = 0; i < n; ++i) cerr << a[i] << ' ';
                 cerr << endl;
 }

 template <typename T, typename ... hello>
 void faltu( T arg, const hello &... rest) {
             cerr << arg << ' ';
                 faltu(rest...);
 }


 int main()
 {
     //file();
     qe();
     li n;
     cin>>n;
     li ans=0;
     for(int i=1;i<n;i++)
         ans+=(n-1)/i;
     cout<<ans;
     return 0;
 }

 // R A S H E D //



Measured memory_bytes: 3644