#include <bits/stdc++.h>
using namespace std;

#define fastio                                                                 \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
#define lli long long int
#define rep(i, n, z) for (int i = z; i < n; i++)
#define rrep(i, z) for (int i = z; i >= 0; i--)
#define nl cout << endl
#define vi vector<int>
#define vlli vector<long long int>
#define vvi vector<vector<int>>
#define vvlli vector<vlli>
#define umap unordered_map
#define pb push_back
#define mp make_pair
#define ss second
#define ff first
#define ipair pair<int, int>
#define llipair pair<lli, lli>
#define pq priority_queue
#define displaymatrix(a, m, n)                                                 \\
  for (int i = 0; i < m; i++) {                                                \\
    for (int j = 0; j < n; j++)                                                \\
      cout << a[i][j] << " ";                                                  \\
    cout << endl;                                                              \\
  }
#define printarray(a, n)                                                       \\
  for (int i = 0; i < n; i++) {                                                \\
    cout << a[i] << " ";                                                       \\
  }                                                                            \\
  nl;
#define vinput(a, n)                                                           \\
  vlli a(n);                                                                   \\
  rep(i, n, 0) cin >> a[i]
#define ainput(a, n) rep(i, n, 0) cin >> a[i]
#define SO(a) sort(a.begin(), a.end())
#define all(x) (x).begin(), (x).end()
#define SOP(a, comp) sort(a.begin(), a.end(), comp)
#define inf INT_MAX
#define endl '\\n'

vector<int> vis;
vector<vector<int>> adj;
vector<long double> dis;
lli val;
lli paths;

void dfs(int v, int p, int lev) {
  // vis[v] = 1;
  // cout<<"NODE STARTED "<<v<<endl;
  int flag = 0;
  for (auto u : adj[v]) {
    if (u != p) {
      flag++;
      dfs(u, v, lev + 1);
      dis[v] += dis[u];
    }
  }
  if (flag == 0) {
    dis[v] = 0;
  } else {
    dis[v] = (dis[v] / flag) + 1;
  }
}

void solve() {
  int n;
  cin >> n;
  lli ans = 0;
  for (int i = 1; i < n; i++) {
    for (int j = 1; j <= sqrt(i); j++) {
      if (i % j == 0 && i / j != j) {
        // cout<<j<<' '<<i/j<<' '<<n-i<<endl;
        ans += 2;
      } else if (i % j == 0 && i / j == j) {
        // cout<<j<<' '<<i/j<<' '<<n-i<<endl;
        ans += 1;
      }
    }
  }
  cout << ans << endl;
}

int main() {
  fastio;
  int t;
  t = 1;
  // cin>>t;
  while (t--)
    solve();
}

#include <bits/stdc++.h>
using namespace std;

#define fastio                                                                 \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
#define lli long long int
#define rep(i, n, z) for (int i = z; i < n; i++)
#define rrep(i, z) for (int i = z; i >= 0; i--)
#define nl cout << endl
#define vi vector<int>
#define vlli vector<long long int>
#define vvi vector<vector<int>>
#define vvlli vector<vlli>
#define umap unordered_map
#define pb push_back
#define mp make_pair
#define ss second
#define ff first
#define ipair pair<int, int>
#define llipair pair<lli, lli>
#define pq priority_queue
#define displaymatrix(a, m, n)                                                 \\
  for (int i = 0; i < m; i++) {                                                \\
    for (int j = 0; j < n; j++)                                                \\
      cout << a[i][j] << " ";                                                  \\
    cout << endl;                                                              \\
  }
#define printarray(a, n)                                                       \\
  for (int i = 0; i < n; i++) {                                                \\
    cout << a[i] << " ";                                                       \\
  }                                                                            \\
  nl;
#define vinput(a, n)                                                           \\
  vlli a(n);                                                                   \\
  rep(i, n, 0) cin >> a[i]
#define ainput(a, n) rep(i, n, 0) cin >> a[i]
#define SO(a) sort(a.begin(), a.end())
#define all(x) (x).begin(), (x).end()
#define SOP(a, comp) sort(a.begin(), a.end(), comp)
#define inf INT_MAX
#define endl '\\n'

vector<int> vis;
vector<vector<int>> adj;
vector<long double> dis;
lli val;
lli paths;

const int MAX = 1000001;
int factor[MAX] = {0};

void generatePrimeFactors() {
  factor[1] = 1;

  // Initializes all the positions with their value.
  for (int i = 2; i < MAX; i++)
    factor[i] = i;

  // Initializes all multiples of 2 with 2
  for (int i = 4; i < MAX; i += 2)
    factor[i] = 2;

  // A modified version of Sieve of Eratosthenes to
  // store the smallest prime factor that divides
  // every number.
  for (int i = 3; i * i < MAX; i++) {
    // check if it has no prime factor.
    if (factor[i] == i) {
      // Initializes of j starting from i*i
      for (int j = i * i; j < MAX; j += i) {
        // if it has no prime factor before, then
        // stores the smallest prime divisor
        if (factor[j] == j)
          factor[j] = i;
      }
    }
  }
}

int calculateNoOFactors(int n) {
  if (n == 1)
    return 1;

  int ans = 1;

  int dup = factor[n];

  // stores the count of number of times
  // a prime number divides n.
  int c = 1;

  // reduces to the next number after prime
  // factorization of n
  int j = n / factor[n];

  // false when prime factorization is done
  while (j != 1) {
    // if the same prime number is dividing n,
    // then we increase the count
    if (factor[j] == dup)
      c += 1;

    /* if its a new prime factor that is factorizing n,
       then we again set c=1 and change dup to the new
       prime factor, and apply the formula explained
       above. */
    else {
      dup = factor[j];
      ans = ans * (c + 1);
      c = 1;
    }
    j = j / factor[j];
  }
  ans = ans * (c + 1);
  return ans;
}

void solve() {
  int n;
  cin >> n;
  lli ans = 0;
  int dp[n + 1];
  memset(dp, 0, sizeof(dp));
  generatePrimeFactors();
  for (int i = 1; i < n; i++) {
    dp[i] = calculateNoOFactors(i);
    int temp = sqrt(i);
    // if(temp * temp == i&& i > 1) dp[i]--;
  }
  for (int i = 1; i < n; i++)
    ans += dp[i];
  // printarray(dp, n+1);
  cout << ans << endl;
}

int main() {
  fastio;
  int t;
  t = 1;
  // cin>>t;
  while (t--)
    solve();
}


#include <algorithm>
#include <bitset>
#include <iostream>
#include <map>
#include <math.h>
#include <numeric>
#include <stack>
#include <stdio.h>
#include <string>
#include <vector>
// #include <atcoder/scc>
// #include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
// using namespace atcoder;
#define urept(soeji, start, n) for (int soeji = start; soeji < n; soeji++)
#define drept(soeji, start, n) for (int soeji = start; soeji > n; soeji--)

template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
}

lli gcd2(lli x, lli y) {
  lli t;
  while (y != 0)
    t = x % y, x = y, y = t;
  return (x);
}

lli lcm2(lli x, lli y) {
  lli xy = x * y;
  if (xy < 0)
    xy = -xy;
  return (xy / gcd2(x, y));
}
lli m = 1e9 + 7;
int main(void) {
  int N;
  cin >> N;
  lli cnt = 0;
  bool f[N];
  fill(f, f + N, false);
  for (int i = 1; i < N; i++) {
    for (int j = 1; j <= N - i; j++) {
      if ((N - i) % j == 0) {
        cnt++;
      }
    }
  }
  cout << cnt << endl;
  return 0;
}

#include <algorithm>
#include <bitset>
#include <iostream>
#include <map>
#include <math.h>
#include <numeric>
#include <stack>
#include <stdio.h>
#include <string>
#include <vector>
// #include <atcoder/scc>
// #include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
// using namespace atcoder;
#define urept(soeji, start, n) for (int soeji = start; soeji < n; soeji++)
#define drept(soeji, start, n) for (int soeji = start; soeji > n; soeji--)

template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
}

lli gcd2(lli x, lli y) {
  lli t;
  while (y != 0)
    t = x % y, x = y, y = t;
  return (x);
}

lli lcm2(lli x, lli y) {
  lli xy = x * y;
  if (xy < 0)
    xy = -xy;
  return (xy / gcd2(x, y));
}
lli m = 1e9 + 7;
int main(void) {
  int N;
  cin >> N;
  lli cnt = 0;
  for (int i = 1; i < N; i++) {
    for (int j = 1; j < N; j++) {
      int c = N - i * j;
      if (c > 0) {
        cnt++;
      } else {
        break;
      }
    }
  }
  cout << cnt << endl;
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;

int main() {

  int n;
  cin >> n;
  long long ans = 0;
  for (int c = 1; c < n; c++) {
    int x = n - c;
    int div = 0;
    for (int i = 1; i <= sqrt(x); i++) {
      if (x % i == 0) {
        if (x / i == i) {
          div++;
        } else
          div += 2;
      }
    }
    ans += div;
  }
  cout << ans << endl;

  return 0;
}

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;

int arr[N];

int divisors[N];

int main() {

  int n;
  cin >> n;

  for (int i = 1; i <= n; ++i)
    for (int j = i; j <= n; j += i)
      ++divisors[j];

  long long ans = 0;
  for (int c = 1; c < n; c++) {
    int x = n - c;
    ans += divisors[x];
  }
  cout << ans << endl;

  return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define MOD (int)(1e9 + 7)
#define ceil(x, y) (x % y == 0 ? (x / y) : (x / y + 1))
#define FOR(i, N) for (int i = 0; i < N; ++i)
#define FOR1(i, N) for (int i = 1; i <= N; ++i)
#define vi vector<int>
#define pii pair<int, int>
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define mset(a, v) memset(a, v, sizeof(a))
#define all(v) (v).begin(), (v).end()
#define INF 2e9
#define EPS 1e-9
#define int long long
/*#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
typedef cc_hash_table<int, int, hash<int>> ht; // while using, comment #define
int long long  */

void __print(int x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\\'' << x << '\\''; }
void __print(const char *x) { cerr << '\\"' << x << '\\"'; }
void __print(const string &x) { cerr << '\\"' << x << '\\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x)
    cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cerr << ", ";
  _print(v...);
}
#ifndef ONLINE_JUDGE
#define dbg(x...)                                                              \\
  cerr << "[" << #x << "] = [";                                                \\
  _print(x)
#else
#define dbg(x...)
#endif
using namespace std;
bool fun(vector<pii> &v, int n) {
  for (int i = 0; i + 2 < n; i++) {
    if (v[i].ff == v[i].ss and v[i + 1].ff == v[i + 1].ss and
        v[i + 2].ff == v[i + 2].ss)
      return true;
  }
  return false;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("in6.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
#endif
  int T = 1;
  // cin >> T;

  FOR1(tt, T) {
    // cout << "Case #" << tt << ": ";
    // TLE?
    int n;
    cin >> n;
    int ans = 0;
    for (int num = 1; num < n; num++) {
      int cnt = 0;
      for (int i = 1; i * i <= num; i++) {
        if (num % i == 0) {
          cnt++;
          if (i * i != num)
            cnt++;
        }
      }
      ans += cnt;
    }
    cout << ans;
    cout << '\\n';
  }
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define MOD (int)(1e9 + 7)
#define ceil(x, y) (x % y == 0 ? (x / y) : (x / y + 1))
#define FOR(i, N) for (int i = 0; i < N; ++i)
#define FOR1(i, N) for (int i = 1; i <= N; ++i)
#define vi vector<int>
#define pii pair<int, int>
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define mset(a, v) memset(a, v, sizeof(a))
#define all(v) (v).begin(), (v).end()
#define INF 2e9
#define EPS 1e-9
#define int long long
/*#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
typedef cc_hash_table<int, int, hash<int>> ht; // while using, comment #define
int long long  */

void __print(int x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\\'' << x << '\\''; }
void __print(const char *x) { cerr << '\\"' << x << '\\"'; }
void __print(const string &x) { cerr << '\\"' << x << '\\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x)
    cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cerr << ", ";
  _print(v...);
}
#ifndef ONLINE_JUDGE
#define dbg(x...)                                                              \\
  cerr << "[" << #x << "] = [";                                                \\
  _print(x)
#else
#define dbg(x...)
#endif
using namespace std;
#define MAX 1000009
// https://www.geeksforgeeks.org/efficient-program-print-number-factors-n-numbers/
int factor[MAX + 1];
int calc(int n) {
  if (n == 1) {
    return 1;
  }

  int ans = 1;

  int dup = factor[n];
  int c = 1;
  int j = n / factor[n];
  while (j != 1) {
    if (factor[j] == dup)
      c += 1;
    else {
      dup = factor[j];
      ans = ans * (c + 1);
      c = 1;
    }
    j = j / factor[j];
  }
  ans = ans * (c + 1);

  return ans;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("in6.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
#endif
  int T = 1;
  // cin >> T;

  FOR1(tt, T) {
    // cout << "Case #" << tt << ": ";
    factor[1] = 1;
    for (int i = 2; i < MAX; i++)
      factor[i] = i;

    for (int i = 4; i < MAX; i += 2)
      factor[i] = 2;

    for (int i = 3; i * i < MAX; i++) {
      if (factor[i] == i) {
        for (int j = i * i; j < MAX; j += i) {
          if (factor[j] == j)
            factor[j] = i;
        }
      }
    }
    int n;
    cin >> n;
    int ans = 0;
    for (int num = 1; num < n; num++) {
      int cnt = calc(num);
      ans += cnt;
    }
    cout << ans;
    cout << '\\n';
  }
  return 0;
}


#include <bits/stdc++.h>
#include <iostream>
#define mod 1000000007
#define ps(x, noOfDecimal) fixed << setprecision(noOfDecimal) << x
using namespace std;

int find(int n) {
  int cnt = 0;
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      int x = i, y = n / i;
      cnt++;
      if (x != y)
        cnt++;
    }
  }
  return cnt;
}
signed main() {
  if (fopen("input.txt", "r")) {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
  }
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  // cin>>t;
  while (t--) {
    int n, ans = 0;
    cin >> n;
    for (int i = 1; i <= n - 1; i++) {
      int cnt = find(i);
      ans += cnt;
    }
    cout << ans;
  }
  return 0;
}

#include <bits/stdc++.h>
#include <iostream>
#define mod 1000000007
#define ps(x, noOfDecimal) fixed << setprecision(noOfDecimal) << x
using namespace std;

signed main() {
  if (fopen("input.txt", "r")) {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
  }
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  // cin>>t;
  while (t--) {
    int n, ans = 0;
    cin >> n;
    vector<int> freq(n);
    for (int i = 1; i < n; i++) {
      for (int j = i; j < n; j += i) {
        freq[j]++;
      }
    }
    for (int i = 1; i < n; i++) {
      ans += freq[i];
      // cout<<freq[i]<<" ";
    }
    cout << ans;
  }
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
const int INF = 1 << 29;
using Graph = vector<vector<int>>;
int main() {
  ll N;
  cin >> N;
  ll res = 0;
  for (ll c = 1; c <= N - 1; ++c) {
    for (ll a = 1; a * a <= c; ++a) {
      if (c % a == 0) {
        res++;
        if (c / a != a)
          res++;
      }
    }
  }
  cout << res << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
  ll N;
  cin >> N;
  ll res = 0;
  // for (ll c=1; c<=N-1; ++c){
  //     for (ll a=1; a*a<=c; ++a){
  //         if(c%a==0) {
  //             res++;
  //             if (c/a!=a) res++;
  //         }
  //     }
  // }
  for (int a = 1; a * a <= N - 1; ++a) {
    // cout << a << " ";
    ll s = (N - 1) / a - (a);
    // cout << s << " " << endl;
    res += 2 * s;
    res++;
  }
  cout << res << endl;
  return 0;
}


#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
typedef long long ll;
ll mod = 1e9 + 7;

int main() {
  int n;
  cin >> n;
  int sum = 0;
  int sum1 = 0;
  for (int i = 1; i < n; i++) {
    int a = n - i;
    sum1 = 0;
    for (int j = 1; j * j <= a; j++) {
      if (a % j == 0)
        sum1 += 2;
      if (a == j * j)
        sum1 -= 1;
    }
    sum += sum1;
  }
  cout << sum;
}

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
typedef long long ll;
ll mod = 1e9 + 7;

int main() {
  int n;
  cin >> n;
  int sum = 0;
  int sum1 = 0;
  for (int i = 1; i < n; i++) {
    int a = n - i;
    sum1 = 0;
    int k = 0;
    for (int j = 1; j * j <= a; j++) {
      if (a % j == 0)
        sum1 += 2;
      k = j;
    }
    if (a == k * k)
      sum1 -= 1;
    sum += sum1;
  }
  cout << sum;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL)
#define endl "\\n"
#define pb push_back
#define mod 1000000007
#define MAX 200009
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
int dx8[] = {1, -1, 0, 0, 1, 1, -1, -1};
int dy8[] = {0, 0, 1, -1, 1, -1, 1, -1};

ll binexp(ll a, ll b, ll m) {
  a %= m;
  ll res = 1;
  while (b > 0) {
    if (b & 1)
      res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}
ll modinvfermat(ll a, ll m) { return binexp(a, m - 2, m); }
void task(bool flag) {
  if (flag)
    cout << "YES\\n";
  else
    cout << "NO\\n";
}
ll lcm(ll a, ll b) { return ((1LL * a * b) / (__gcd(a, b))); }

bool sortbysec(const pair<int, int> &a, const pair<int, int> &b) {
  return (a.second < b.second);
}
bool sortbyme(const pair<int, int> &a, const pair<int, int> &b) {
  return (a.first + a.second > b.first + b.second);
}
struct test {
  int x, y, z;
};
// ll n;
// ll m;
// ll k;

// vector<pair<ll,ll>> v;
// ll vis[500000];
// ll dist[500000];

// void dfs(ll node){
//     vis[node]=1;
//     for(auto i:v[node]){
//         if(vis[i]==0){
//             dfs(i);

//         }
//     }
// }
// void bfs(ll node){
//     queue<ll> q;
//     vis[node]=1;
//     dist[node]=0;

//     q.push(node);
//     while(!q.empty()){
//         ll curr=q.front();
//         q.pop();

//         for(auto i:v[curr]){
//             if(vis[i]==0){
//                 vis[i]=1;
//                 dist[i]=dist[curr]+1;
//                 q.push(i);

//             }
//         }

//     }
// }

void solve() {

  ll n;
  cin >> n;
  ll ans = 0;
  for (ll i = 1; i <= n - 1; i++) {
    ll temp = n - i;
    ll cc = 0;
    vector<ll> fact;
    ll f = temp;
    ll loc = 1;

    for (ll j = 2; j * j <= temp; j++) {
      if (temp % j == 0) {

        ll cnt = 0;

        while (f % j == 0 && f != 0) {
          f = f / j;

          cnt++;
        }
        // fact.pb(cnt);
        loc *= (cnt + 1);
      }
    }
    // if(f!=1){
    //     fact.pb(1);

    // }

    // for(auto i:fact){
    //     loc*=(i+1);

    // }
    if (f != 1) {
      loc *= (2);
    }
    ans += loc;
  }
  cout << ans << endl;

  return;
}

int main() {
#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
  fast;

  ll t;
  t = 1;
  // cin>>t;
  while (t--) {
    solve();
  }

#ifndef ONLINE_JUDGE
  cout << "\\nTime Elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " sec\\n";
#endif
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL)
#define endl "\\n"
#define pb push_back
#define mod 1000000007
#define MAX 200009
#define MAXN 1000001
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
int dx8[] = {1, -1, 0, 0, 1, 1, -1, -1};
int dy8[] = {0, 0, 1, -1, 1, -1, 1, -1};
int spf[MAXN];
// ll binexp(ll a, ll b, ll m) {
// 	a %= m;
// 	ll res = 1;
// 	while (b > 0) {
// 		if (b & 1)
// 			res = res * a % m;
// 		a = a * a % m;
// 		b >>= 1;
// 	}
// 	return res;
// }
// ll modinvfermat(ll a, ll m)
// {
// 	return binexp(a, m - 2, m);
// }
// void task(bool flag)
// {
// 	if (flag)
// 		cout << "YES\\n";
// 	else
// 		cout << "NO\\n";
// }
// ll lcm(ll a, ll b)
// {
// 	return ((1LL * a * b) / (__gcd(a, b)));
// }
// // int spf[MAXN];
// void sieve()
// {
// 	int i,j;
// 	for(i=0;i<MAXN;i++)
// 	spf[i]=i;
// 	for(i=4;i<MAXN;i+=2)
// 	spf[i]=2;
// 	for(i=3;i*i<MAXN;i++)
// 	{
// 		if(spf[i]==i)
// 		{
// 			for(j=i*i;j<MAXN;j+=i)
// 			{
// 				if(spf[j]==j)spf[j]=i;
// 			}
// 		}
// 	}
// }
// int fac(int n)
// {
//     if(n==1)return 1;
//     int ans = 1;
//     int y = spf[n];
//     int ctr = 1;
//     int j = n / y;
//     while (j != 1) {
//         if (spf[j] == y)
//             ctr ++;
//         else {
//             y = spf[j];
//             ans = ans*(ctr + 1);
//             ctr = 1;
//         }
//         j = j / spf[j];
//     }
//     ans = ans *(ctr + 1);
//     return ans;
// }

// bool sortbysec(const pair<int,int> &a,
//               const pair<int,int> &b)
// {
//     return (a.second < b.second);
// }
// bool sortbyme(const pair<int,int> &a,
//               const pair<int,int> &b){
// 	return (a.first+a.second > b.first+b.second);

// }
// struct test
// {
//   int x, y, z;
// };

void sieve() {
  int i, j;
  for (i = 0; i < MAXN; i++)
    spf[i] = i;
  for (i = 4; i < MAXN; i += 2)
    spf[i] = 2;
  for (i = 3; i * i < MAXN; i++) {
    if (spf[i] == i) {
      for (j = i * i; j < MAXN; j += i) {
        if (spf[j] == j)
          spf[j] = i;
      }
    }
  }
}
ll fac(ll n) {

  if (n == 1)
    return 1;

  ll ans = 1, y = spf[n];

  ll ctr = 1, j = n / y;
  while (j != 1) {
    if (spf[j] == y)
      ctr++;
    else {
      y = spf[j];
      ans = ans * (ctr + 1);
      ctr = 1;
    }
    j = j / spf[j];
  }
  ans = ans * (ctr + 1);
  return ans;
}
// ll n;
// ll m;
// ll k;

// vector<pair<ll,ll>> v;
// ll vis[500000];
// ll dist[500000];

// void dfs(ll node){
//     vis[node]=1;
//     for(auto i:v[node]){
//         if(vis[i]==0){
//             dfs(i);

//         }
//     }
// }
// void bfs(ll node){
//     queue<ll> q;
//     vis[node]=1;
//     dist[node]=0;

//     q.push(node);
//     while(!q.empty()){
//         ll curr=q.front();
//         q.pop();

//         for(auto i:v[curr]){
//             if(vis[i]==0){
//                 vis[i]=1;
//                 dist[i]=dist[curr]+1;
//                 q.push(i);

//             }
//         }

//     }
// }

// string alpha="abcdefghijklmnopqrstuvwxyz";
// int dx[]={1,-1,0,0};
// int dy[]={0,0,1,-1};
// int dx8[]={1,-1,0,0,1,1,-1,-1};
// int dy8[]={0,0,1,-1,1,-1,1,-1};
//  int spf[MAXN];
//  void sieve()
//  {
//  	int i,j;
//  	for(i=0;i<MAXN;i++)
//  	spf[i]=i;
//  	for(i=4;i<MAXN;i+=2)
//  	spf[i]=2;
//  	for(i=3;i*i<MAXN;i++)
//  	{
//  		if(spf[i]==i)
//  		{
//  			for(j=i*i;j<MAXN;j+=i)
//  			{
//  				if(spf[j]==j)spf[j]=i;
//  			}
//  		}
//  	}
//  }
//  int fac(int n)
//  {
//      if(n==1)return 1;
//      int ans = 1;
//      int y = spf[n];
//      int ctr = 1;
//      int j = n / y;
//      while (j != 1) {
//          if (spf[j] == y)
//              ctr ++;
//          else {
//              y = spf[j];
//              ans = ans*(ctr + 1);
//              ctr = 1;
//          }
//          j = j / spf[j];
//      }
//      ans = ans *(ctr + 1);
//      return ans;
//  }

void solve() {

  ll n;
  cin >> n;
  ll ans = 0;
  sieve();
  for (ll i = 1; i <= n - 1; i++) {
    // ll temp=n-i;
    // ll cc=0;
    // vector<ll>fact;
    //   ll f=temp;
    //       ll loc=1;

    // for(ll j=2;j*j<=temp;j++){
    //     if(temp%j==0){

    //         ll cnt=0;

    //         while(f%j==0&&f!=0){
    //             f=f/j;

    //             cnt++;

    //         }
    //         // fact.pb(cnt);
    //         loc*=(cnt+1);

    //     }
    // }
    // // if(f!=1){
    // //     fact.pb(1);

    // // }

    // // for(auto i:fact){
    // //     loc*=(i+1);

    // // }
    // if(f!=1){
    //     loc*=(2);

    // }
    ans += fac(n - i);
  }
  cout << ans << endl;

  return;
}

int main() {
#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
  fast;

  ll t;
  t = 1;
  // cin>>t;
  while (t--) {
    solve();
  }

#ifndef ONLINE_JUDGE
  cout << "\\nTime Elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " sec\\n";
#endif
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  long long ans = 0;
  cin >> n;
  for (int i = 1; i < n; ++i) {
    int num = n - i;
    for (int j = 1; j <= sqrt(num); ++j) {
      if (num % j == 0) {
        if (j == sqrt(num)) {
          ++ans;
        } else {
          ans += 2;
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  long long ans = 0;
  cin >> n;
  for (int i = 1; i < n; ++i) {
    int num = n - i;
    float sq = sqrt(num);
    for (int j = 1; j <= sq; ++j) {
      if (num % j == 0) {
        if (j == sq) {
          ++ans;
        } else {
          ans += 2;
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}


#include <bits/stdc++.h>
#include <iostream>
#include <string>
using namespace std;
typedef long long ll;

int main() {
  int n;
  cin >> n;
  ll ans = 0;

  for (int c = 1; c < n; c++) {
    int num = n - c;
    for (int i = 1; i <= sqrt(num); ++i) {
      if (num % i == 0)
        if (num / i == i) {
          ans++;
        } else {
          ans++;
          ans++;
        }
    }
  }
  cout << ans << endl;
}

#include <bits/stdc++.h>
#include <iostream>
#include <string>
using namespace std;
typedef long long ll;

int main() {
  int n;
  cin >> n;
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    ans += (n - 1) / i;
  }
  cout << ans << endl;
}


// Hey stalker :)
#pragma GCC optimize("Ofast")
#define _USE_MATH_DEFINES
#include "bits/stdc++.h"
using namespace std;

#define max(a, b) (a < b ? b : a)
#define min(a, b) ((a > b) ? b : a)

#define MOD 1000000007

#define FOR(a, c) for (ll(a) = 0; (a) < (c); (a)++)
#define FORL(a, b, c) for (ll(a) = (b); (a) < (c); (a)++)
#define FORR(a, b, c) for (ll(a) = (b); (a) >= (c); (a)--)
#define all(v) (v).begin(), (v).end()
#define Sort(v) sort(all((v)))
#define rSort(v) sort((v).rbegin(), (v).rend())
#define gcd(a, b) __gcd(a, b)
#define lcm(a, b) (x / gcd(x, y)) * y
#define INF 9223372036854775807
// 18446744073709551615
#define abs llabs
#define by_ANIKET                                                              \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);

#define no cout << "No\\n";
#define yes cout << "Yes\\n";

#define Clear(a, b) memset(a, b, sizeof(a))
#define ppc __builtin_popcount
#define ppcll __builtin_popcountll

#define pr3(a, b, c)                                                           \\
  cerr << #a << "=" << a << "\\t" << #b << "=" << b << "\\t" << #c << "=" << c   \\
       << "\\n";
#define pr2(a, b) cerr << #a << "=" << a << "\\t" << #b << "=" << b << "\\n";
#define pr1(a) cerr << #a << "=" << a << "\\n";
#define debug(x) cerr << #x << " : " << x << endl;
#define debuga(A, N)                                                           \\
  cerr << #A << " : [";                                                        \\
  for (int i = 0; i < N; i++)                                                  \\
    cerr << A[i] << " ";                                                       \\
  cerr << "]\\n";
#define debuga2(A, N, M)                                                       \\
  cerr << #A << " : \\n";                                                       \\
  for (int i = 0; i < N; i++) {                                                \\
    cerr << "[";                                                               \\
    for (int j = 0; j < M; ++j)                                                \\
      cerr << A[i][j] << " ";                                                  \\
    cerr << "]\\n";                                                             \\
  }
#define debugp(p)                                                              \\
  cerr << #p << " : "                                                          \\
       << "(" << (p).first << "," << (p).second << ")\\n";
#define debugv(v)                                                              \\
  cerr << #v << " : "                                                          \\
       << "[";                                                                 \\
  for (int i = 0; i < (v).size(); i++)                                         \\
    cerr << v[i] << " ";                                                       \\
  cerr << "]\\n";
#define debugv2(v)                                                             \\
  cerr << #v << " : \\n";                                                       \\
  for (int i = 0; i < v.size(); i++) {                                         \\
    cerr << "[";                                                               \\
    for (int j = 0; j < (v[0].size()); ++j)                                    \\
      cerr << v[i][j] << " ";                                                  \\
    cerr << "]\\n";                                                             \\
  }
#define debugs(m)                                                              \\
  cerr << #m << " : [ ";                                                       \\
  for (auto itr = m.begin(); itr != m.end(); itr++)                            \\
    cerr << *itr << " ";                                                       \\
  cerr << "]\\n";
#define debugm(m)                                                              \\
  cerr << #m << " : [ ";                                                       \\
  for (auto itr = m.begin(); itr != m.end(); itr++)                            \\
    cerr << "(" << itr->first << "," << itr->second << ") ";                   \\
  cerr << "]\\n";
typedef unsigned long long ull;
typedef long long int ll;
typedef vector<ll> vi;
typedef pair<ll, ll> pi;

#define F first
#define S second
#define PB push_back
#define POB pop_back

inline long long max3(long long a, long long b, long long c) {
  return (a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c));
}
inline long long min3(long long a, long long b, long long c) {
  return (a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c));
}

const ll N = 100005;
ll n;
const int MAX = 1000001;
int factor[MAX] = {0};
void generatePrimeFactors() {
  factor[1] = 1;

  for (int i = 2; i < MAX; i++)
    factor[i] = i;

  // Initializes all multiples of 2 with 2
  for (int i = 4; i < MAX; i += 2)
    factor[i] = 2;

  // A modified version of Sieve of Eratosthenes to
  // store the smallest prime factor that divides
  // every number.
  for (int i = 3; i * i < MAX; i++) {
    // check if it has no prime factor.
    if (factor[i] == i) {
      // Initializes of j starting from i*i
      for (int j = i * i; j < MAX; j += i) {
        // if it has no prime factor before, then
        // stores the smallest prime divisor
        if (factor[j] == j)
          factor[j] = i;
      }
    }
  }
}

// function to calculate number of factors
int calculateNoOFactors(int n) {
  if (n == 1)
    return 1;

  int ans = 1;

  // stores the smallest prime number
  // that divides n
  int dup = factor[n];

  // stores the count of number of times
  // a prime number divides n.
  int c = 1;

  // reduces to the next number after prime
  // factorization of n
  int j = n / factor[n];

  // false when prime factorization is done
  while (j != 1) {
    // if the same prime number is dividing n,
    // then we increase the count
    if (factor[j] == dup)
      c += 1;

    /* if its a new prime factor that is factorizing n,
       then we again set c=1 and change dup to the new
       prime factor, and apply the formula explained
       above. */
    else {
      dup = factor[j];
      ans = ans * (c + 1);
      c = 1;
    }

    // prime factorizes a number
    j = j / factor[j];
  }

  // for the last prime factor
  ans = ans * (c + 1);

  return ans;
}
ll divCount(ll n) {
  // sieve method for prime calculation
  bool hash[n + 1];
  memset(hash, true, sizeof(hash));
  for (int p = 2; p * p < n; p++)
    if (hash[p] == true)
      for (int i = p * 2; i < n; i += p)
        hash[i] = false;

  // Traversing through all prime numbers
  ll total = 1;
  for (int p = 2; p <= n; p++) {
    if (hash[p]) {

      // calculate number of divisor
      // with formula total div =
      // (p1+1) * (p2+1) *.....* (pn+1)
      // where n = (a1^p1)*(a2^p2)....
      // *(an^pn) ai being prime divisor
      // for n and pi are their respective
      // power in factorization
      ll count = 0;
      if (n % p == 0) {
        while (n % p == 0) {
          n = n / p;
          count++;
        }
        total = total * (count + 1);
      }
    }
  }
  return total;
}
void solve() {
  ll m, mx, my, t = 0, k = 0, x = 0, y = 0, z = 0, a1, a2, a3, a4, a5, var = 1,
                f = INF, che = 0, ex;
  cin >> n;
  FORL(i, 1, n - 1) {
    x = n - i;
    y = divCount(x);
    z += y;
  }
  cout << z + 1 << "\\n";
}

int main() {
  // #ifndef ONLINE_JUDGE
  // freopen("Input.txt", "r", stdin);
  // freopen("Output.txt", "w", stdout);
  // freopen("Error.txt","w",stderr);
  // #endif
  by_ANIKET ll T = 1, t = 0;
  // cin>>T;
  while (t++ < T) {
    // cout<<"Case #"<<t<<":"<<' ';
    solve();
    // cout<<'\\n';
  }
  cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC
       << "ms\\n";
}
//   ©
//                      ______  __    __ ______ __    __ ________ ________
//                     /      \\|  \\  |  \\      \\  \\  /  \\        \\        \\
//                    |  ▓▓▓▓▓▓\\ ▓▓\\ | ▓▓\\▓▓▓▓▓▓ ▓▓ /  ▓▓ ▓▓▓▓▓▓▓▓\\▓▓▓▓▓▓▓▓
//  ______ ______     | ▓▓__| ▓▓ ▓▓▓\\| ▓▓ | ▓▓ | ▓▓/  ▓▓| ▓▓__      | ▓▓
// |      \\      \\    | ▓▓    ▓▓ ▓▓▓▓\\ ▓▓ | ▓▓ | ▓▓  ▓▓ | ▓▓  \\     | ▓▓
//  \\▓▓▓▓▓▓\\▓▓▓▓▓▓    | ▓▓▓▓▓▓▓▓ ▓▓\\▓▓ ▓▓ | ▓▓ | ▓▓▓▓▓\\ | ▓▓▓▓▓     | ▓▓
//                    | ▓▓  | ▓▓ ▓▓ \\▓▓▓▓_| ▓▓_| ▓▓ \\▓▓\\| ▓▓_____   | ▓▓
//                    | ▓▓  | ▓▓ ▓▓  \\▓▓▓   ▓▓ \\ ▓▓  \\▓▓\\ ▓▓     \\  | ▓▓
//                     \\▓▓   \\▓▓\\▓▓   \\▓▓\\▓▓▓▓▓▓\\▓▓   \\▓▓\\▓▓▓▓▓▓▓▓   \\▓▓

// Hey stalker :)
#pragma GCC optimize("Ofast")
#define _USE_MATH_DEFINES
#include "bits/stdc++.h"
using namespace std;

#define max(a, b) (a < b ? b : a)
#define min(a, b) ((a > b) ? b : a)

#define MOD 1000000007

#define FOR(a, c) for (ll(a) = 0; (a) < (c); (a)++)
#define FORL(a, b, c) for (ll(a) = (b); (a) < (c); (a)++)
#define FORR(a, b, c) for (ll(a) = (b); (a) >= (c); (a)--)
#define all(v) (v).begin(), (v).end()
#define Sort(v) sort(all((v)))
#define rSort(v) sort((v).rbegin(), (v).rend())
#define gcd(a, b) __gcd(a, b)
#define lcm(a, b) (x / gcd(x, y)) * y
#define INF 9223372036854775807
// 18446744073709551615
#define abs llabs
#define by_ANIKET                                                              \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);

#define no cout << "No\\n";
#define yes cout << "Yes\\n";

#define Clear(a, b) memset(a, b, sizeof(a))
#define ppc __builtin_popcount
#define ppcll __builtin_popcountll

#define pr3(a, b, c)                                                           \\
  cerr << #a << "=" << a << "\\t" << #b << "=" << b << "\\t" << #c << "=" << c   \\
       << "\\n";
#define pr2(a, b) cerr << #a << "=" << a << "\\t" << #b << "=" << b << "\\n";
#define pr1(a) cerr << #a << "=" << a << "\\n";
#define debug(x) cerr << #x << " : " << x << endl;
#define debuga(A, N)                                                           \\
  cerr << #A << " : [";                                                        \\
  for (int i = 0; i < N; i++)                                                  \\
    cerr << A[i] << " ";                                                       \\
  cerr << "]\\n";
#define debuga2(A, N, M)                                                       \\
  cerr << #A << " : \\n";                                                       \\
  for (int i = 0; i < N; i++) {                                                \\
    cerr << "[";                                                               \\
    for (int j = 0; j < M; ++j)                                                \\
      cerr << A[i][j] << " ";                                                  \\
    cerr << "]\\n";                                                             \\
  }
#define debugp(p)                                                              \\
  cerr << #p << " : "                                                          \\
       << "(" << (p).first << "," << (p).second << ")\\n";
#define debugv(v)                                                              \\
  cerr << #v << " : "                                                          \\
       << "[";                                                                 \\
  for (int i = 0; i < (v).size(); i++)                                         \\
    cerr << v[i] << " ";                                                       \\
  cerr << "]\\n";
#define debugv2(v)                                                             \\
  cerr << #v << " : \\n";                                                       \\
  for (int i = 0; i < v.size(); i++) {                                         \\
    cerr << "[";                                                               \\
    for (int j = 0; j < (v[0].size()); ++j)                                    \\
      cerr << v[i][j] << " ";                                                  \\
    cerr << "]\\n";                                                             \\
  }
#define debugs(m)                                                              \\
  cerr << #m << " : [ ";                                                       \\
  for (auto itr = m.begin(); itr != m.end(); itr++)                            \\
    cerr << *itr << " ";                                                       \\
  cerr << "]\\n";
#define debugm(m)                                                              \\
  cerr << #m << " : [ ";                                                       \\
  for (auto itr = m.begin(); itr != m.end(); itr++)                            \\
    cerr << "(" << itr->first << "," << itr->second << ") ";                   \\
  cerr << "]\\n";
typedef unsigned long long ull;
typedef long long int ll;
typedef vector<ll> vi;
typedef pair<ll, ll> pi;

#define F first
#define S second
#define PB push_back
#define POB pop_back

inline long long max3(long long a, long long b, long long c) {
  return (a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c));
}
inline long long min3(long long a, long long b, long long c) {
  return (a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c));
}

const ll N = 1000005;
ll n;
bool hhash[1000005];
vi ps;
void s() {
  ll n = N;
  memset(hhash, true, sizeof(hhash));
  for (int p = 2; p * p < n; p++)
    if (hhash[p] == true)
      for (int i = p * 2; i < n; i += p)
        hhash[i] = false;
  ps.PB(2);
  for (int p = 3; p < n; p += 2) {
    if (hhash[p])
      ps.PB(p);
  }
}
ll divCount(ll n) {
  // sieve method for prime calculation

  // Traversing through all prime numbers
  ll total = 1;
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      ll c = 0;
      while (n % i == 0) {
        n /= i;
        c++;
      }
      total = total * (c + 1);
    }
  }
  if (n != 1)
    total *= 2;
  return total;
}
void solve() {
  ll m, mx, my, t = 0, k = 0, x = 0, y = 0, z = 0, a1, a2, a3, a4, a5, var = 1,
                f = INF, che = 0, ex;
  cin >> n;
  FORL(i, 1, n - 1) {
    x = n - i;
    y = divCount(x);
    z += y;
  }
  cout << z + 1 << "\\n";
}

int main() {
  s();
  // #ifndef ONLINE_JUDGE
  // freopen("Input.txt", "r", stdin);
  // freopen("Output.txt", "w", stdout);
  // freopen("Error.txt","w",stderr);
  // #endif
  by_ANIKET ll T = 1, t = 0;
  // cin>>T;
  while (t++ < T) {
    // cout<<"Case #"<<t<<":"<<' ';
    solve();
    // cout<<'\\n';
  }
  cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC
       << "ms\\n";
}
//   ©
//                      ______  __    __ ______ __    __ ________ ________
//                     /      \\|  \\  |  \\      \\  \\  /  \\        \\        \\
//                    |  ▓▓▓▓▓▓\\ ▓▓\\ | ▓▓\\▓▓▓▓▓▓ ▓▓ /  ▓▓ ▓▓▓▓▓▓▓▓\\▓▓▓▓▓▓▓▓
//  ______ ______     | ▓▓__| ▓▓ ▓▓▓\\| ▓▓ | ▓▓ | ▓▓/  ▓▓| ▓▓__      | ▓▓
// |      \\      \\    | ▓▓    ▓▓ ▓▓▓▓\\ ▓▓ | ▓▓ | ▓▓  ▓▓ | ▓▓  \\     | ▓▓
//  \\▓▓▓▓▓▓\\▓▓▓▓▓▓    | ▓▓▓▓▓▓▓▓ ▓▓\\▓▓ ▓▓ | ▓▓ | ▓▓▓▓▓\\ | ▓▓▓▓▓     | ▓▓
//                    | ▓▓  | ▓▓ ▓▓ \\▓▓▓▓_| ▓▓_| ▓▓ \\▓▓\\| ▓▓_____   | ▓▓
//                    | ▓▓  | ▓▓ ▓▓  \\▓▓▓   ▓▓ \\ ▓▓  \\▓▓\\ ▓▓     \\  | ▓▓
//                     \\▓▓   \\▓▓\\▓▓   \\▓▓\\▓▓▓▓▓▓\\▓▓   \\▓▓\\▓▓▓▓▓▓▓▓   \\▓▓


#include <bits/stdc++.h>
using namespace std;
// vector<vector<int>> a(5, vector<int>(5, 0)) 5*5-0
int main() {
  long long int n;
  cin >> n;
  long long int res = 0;
  // cの候補が1から

  for (long long int i = 1; i < n; i++) { // c = i;
    for (long long int j = 1; j * j <= n - i; j++) {
      if ((n - i) % j == 0) {
        if (j == (n - i) / j) {
          res = res + 1;
        } else {
          res = res + 2;
        }
      }
    }
  }
  cout << res << endl;
}

#include <bits/stdc++.h>
using namespace std;
// vector<vector<int>> a(5, vector<int>(5, 0)) 5*5-0
int main() {
  long long int n;
  cin >> n;
  long long int res = 0;

  for (long long int a = 1; a < n; a++) {
    res += (n - 1) / a;
  }

  /*for(long long int i = 1; i < n; i++){// c = i;
      for(long long int j = 1; j*j <= n - i; j++){
          if((n - i)%j == 0){
              if(j == (n - i) / j){
                  res = res + 1;
              }else{
                  res = res + 2;
              }
          }
      }
  }*/
  cout << res << endl;
}


#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < n; i++)
#define all(v) v.begin(), v.end()
typedef long long ll;

int main() {
  int n;
  cin >> n;

  int ans = 0;

  for (int c = 1; c <= n - 1; c++) {
    int tmp = n - c;
    for (int i = 1; i * i <= tmp; i++) {
      if (tmp % i == 0) {
        if (i == tmp / i) {
          ans++;
        } else {
          ans += 2;
        }
      }
    }
  }

  cout << ans << endl;
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < n; i++)
#define all(v) v.begin(), v.end()
typedef long long ll;

int main() {
  int n;
  cin >> n;

  int ans = 0;

  for (int c = 1; c <= n - 1; c++) {
    int tmp = n - c;

    int tmpi = 1; // tmpの約数の個数
    for (int i = 2; i * i <= tmp; i++) {
      int ex = 0; // 次数
      while (tmp % i == 0) {
        ex++;
        tmp /= i;
      }
      tmpi *= ex + 1;

      if (tmp == 1)
        break;
    }
    if (tmp != 1)
      tmpi *= 2;

    ans += tmpi;
  }

  cout << ans << endl;
}


#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

int main() {
  int N, A, B, Ans = 0;
  cin >> N;
  for (int i = 1; i < N; i++) {
    for (int j = 1; j <= sqrt(N - i); j++) {
      if ((N - i) % j == 0) {
        if (j == sqrt(N - i)) {
          Ans++;
        } else {
          Ans++;
          Ans++;
        }
      }
    }
  }
  cout << Ans << endl;
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

int main() {
  int N, Ans = 0;
  cin >> N;
  for (int i = 1; i < N; i++) {
    for (int j = 1; j * j <= N - i; j++) {
      if ((N - i) % j == 0) {
        if (j == sqrt(N - i)) {
          Ans++;
        } else {
          Ans++;
          Ans++;
        }
      }
    }
  }
  cout << Ans << endl;
}


#include <iostream>
using namespace std;
int main(void) {
  int n;
  cin >> n;
  int ans = 0;
  for (int a = 1; a < n; a++) {
    for (int c = 1; c < n; c++) {
      if ((n - c) % a == 0)
        ans++;
    }
  }
  cout << ans << endl;
}

#include <iostream>
using namespace std;
int main(void) {
  int n;
  cin >> n;
  int ans = 0;

  for (int i = 1; i < n; i++) {
    ans += (n - 1) / i;
  }
  cout << ans << endl;
}


#include <iostream>
#include <string>
using namespace std;

int N;

int input() {
  cin >> N;
  return 0;
}

int solve() {
  long long count = 0;
  for (int c = 1; c < N; c++) {
    // N-cの約数の数を求める。
    for (int a = 1; a <= N - c; a++) {
      if ((N - c) % a == 0) {
        count++;
      }
    }
  }
  cout << count << endl;
  return 0;
}

int main() {
  input();
  solve();
  return 0;
}

#include <iostream>
#include <string>
using namespace std;
#define N_MAX 1000000

int N;

int input() {
  cin >> N;
  return 0;
}

// int solve(){
//     long long count_total = 0;
//     // long long memo[N_MAX];
//     // memo[1]=1;
//     for (int c=1;c<N;c++){
//         // N-cの約数の数を求める
//         int count=0;
//         for (int a=1;a<=N-c/2+1;a++){
//             if ((N-c)%a==0){
//                 count++;
//             }
//         }
//         count

//     }
//     cout << count_total << endl;
//     return 0;
// }

int solve() {
  int count = 0;
  for (int a = 1; a <= N - 1; a++) {
    count += (N - 1) / a;
  }
  cout << count << endl;
  return 0;
}

int main() {
  input();
  solve();
  return 0;
}


#include <bits/stdc++.h>
typedef long long int ll;

using namespace std;
const double PI = 3.14159265358979323846;

ll wari(ll a) {

  ll i = 1;

  int count = 0;

  while (i * i <= a) {

    if (a % i == 0) {

      count++;

      if (i * i != a) {

        count++;
      }
    }

    i++;
  }

  return count;
}

int main() {
  int N;

  cin >> N;

  ll ans = 0;

  for (int i = 1; i < N; i++) {

    ans += wari(N - i);
  }

  cout << ans << endl;

  return 0;
}

#include <bits/stdc++.h>
typedef long long int ll;

using namespace std;
const double PI = 3.14159265358979323846;

ll wari(ll a) {

  ll i = 1;

  int count = 0;

  while (i * i <= a) {

    if (a % i == 0) {

      count++;

      if (i * i != a) {

        count++;
      }
    }

    i++;
  }

  return count;
}

int main() {
  int N;

  cin >> N;

  ll ans = 0;

  int i = 1;

  while (i < N) {

    int sub = N / i;

    int count = min(sub, i);

    int k_max = count;

    if (N == k_max * i) {

      k_max--;
    }

    count = k_max * 2;

    if (k_max == i) {

      count--;
    }

    ans += count;
    i++;
  }

  cout << ans << endl;

  return 0;
}


#include <bits/stdc++.h>
#define ll long long int
#define db long double
#define ull unsigned long long int
// #define mp make_pair
#define F first
#define S second
#define pb push_back
#define rep(i, a, b) for (ll i = a; i <= b; i++)
#define all(a) a.begin(), a.end()
#define Nmax 1000005
// #define INF 10000000000000
#define MOD 1000000007
#define MAXN 200005

using namespace std;

ll mod = 998244353;

ll expo(ll base, ll exponent, ll mod) {
  ll ans = 1;
  while (exponent != 0) {
    if (exponent & 1)
      ans = (1LL * ans * base) % mod;
    base = (1LL * base * base) % mod;
    exponent >>= 1;
  }
  return ans % mod;
}

const ll M = 3000006;
ll f[M], inv[M];

void compute() {
  f[0] = 1;
  rep(i, 1, M - 1) { f[i] = (1LL * i * f[i - 1]) % mod; }
  inv[M - 1] = expo(f[M - 1], mod - 2, mod);
  for (ll i = M - 2; i >= 0; i--) {
    inv[i] = (1LL * (i + 1) * inv[i + 1]) % mod;
  }
}
ll C(ll n, ll r) {
  return (1LL * ((1LL * f[n] * inv[r]) % mod) * inv[n - r]) % mod;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  // compute();
  int tests = 1;
  // cin>>tests;
  while (tests--) {
    ll i, j, k, n;
    cin >> n;
    ll ans = 0;
    rep(i, 1, n - 1) {
      ll val = n - i;
      rep(j, 1, sqrt(val)) {
        if (val % j == 0) {
          if (j != val / j)
            ans += 2;
          else
            ans++;
        }
      }
    }

    cout << ans;
  }

  return 0;
}

#include <bits/stdc++.h>
#define ll long long int
#define db long double
#define ull unsigned long long int
// #define mp make_pair
#define F first
#define S second
#define pb push_back
#define rep(i, a, b) for (ll i = a; i <= b; i++)
#define all(a) a.begin(), a.end()
#define Nmax 1000005
// #define INF 10000000000000
#define MOD 1000000007
#define MAXN 200005

using namespace std;

ll mod = 998244353;

ll expo(ll base, ll exponent, ll mod) {
  ll ans = 1;
  while (exponent != 0) {
    if (exponent & 1)
      ans = (1LL * ans * base) % mod;
    base = (1LL * base * base) % mod;
    exponent >>= 1;
  }
  return ans % mod;
}

const ll M = 3000006;
ll f[M], inv[M];

void compute() {
  f[0] = 1;
  rep(i, 1, M - 1) { f[i] = (1LL * i * f[i - 1]) % mod; }
  inv[M - 1] = expo(f[M - 1], mod - 2, mod);
  for (ll i = M - 2; i >= 0; i--) {
    inv[i] = (1LL * (i + 1) * inv[i + 1]) % mod;
  }
}
ll C(ll n, ll r) {
  return (1LL * ((1LL * f[n] * inv[r]) % mod) * inv[n - r]) % mod;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  // compute();
  int tests = 1;
  // cin>>tests;
  while (tests--) {
    ll i, j, k, n;
    cin >> n;
    ll ans = 0;
    rep(i, 1, sqrt(n)) {
      j = i;
      ll cur = 0;
      while (i * j < n) {
        j++;
        cur += 2;
      }
      cur--;
      ans += max(0LL, cur);
    }

    cout << ans;
  }

  return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define in(a)                                                                  \\
  ll a;                                                                        \\
  cin >> a;
#define in2(a, b)                                                              \\
  ll a, b;                                                                     \\
  cin >> a >> b;
#define in3(a, b, c)                                                           \\
  ll a, b, c;                                                                  \\
  cin >> a >> b >> c;
#define in4(a, b, c, d)                                                        \\
  ll a, b, c, d;                                                               \\
  cin >> a >> b >> c >> d;
#define in5(a, b, c, d, e)                                                     \\
  ll a, b, c, d, e;                                                            \\
  cin >> a >> b >> c >> d >> e;
#define lelo(b)                                                                \\
  for (auto &i : b)                                                            \\
    cin >> i;
#define ff first
#define ss second
#define call(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define show(x)                                                                \\
  for (auto t : x)                                                             \\
    cout << t << " ";
#define pb push_back
#define bhar(s, v) memset(s, v, sizeof(s))
#define endl "\\n"
#define ce(x) cout << x << "\\n";
#define nl cout << endl;
#define jaldi                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
#define dekh_lo ce("dekh_lo");
#define sz(x) (ll) x.size()
#define re return

void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\\'' << x << '\\''; }
void __print(const char *x) { cerr << '\\"' << x << '\\"'; }
void __print(const string &x) { cerr << '\\"' << x << '\\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x)
    cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cerr << ", ";
  _print(v...);
}
#ifndef ONLINE_JUDGE
#define debug(x...)                                                            \\
  cerr << "[" << #x << "] = [";                                                \\
  _print(x)
#else
#define debug(x...)
#endif

typedef pair<ll, ll> pii;
typedef vector<pii> vii;
typedef vector<ll> vi;

const ll mod = 1e9 + 7;
const ll N = 4e5 + 5;
ll i, j;

/*

*/

void solve() {
  in(n);
  ll ans = 0;
  for (ll c = 1; (n - c) >= 1; c++) {
    ll tar = n - c;
    for (i = 1; i * i <= tar; i++) {
      if (tar % i == 0) {
        if (i != (tar / i)) {
          ans += 2;
        } else {
          ans += 1;
        }
      }
    }
    // dekh_lo
  }
  ce(ans);
}

int32_t main() {
  // jaldi
  ll t;
  // cin>>t;
  t = 1;
  while (t--) {
    solve();
  }
}

/*

*/

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define in(a)                                                                  \\
  ll a;                                                                        \\
  cin >> a;
#define in2(a, b)                                                              \\
  ll a, b;                                                                     \\
  cin >> a >> b;
#define in3(a, b, c)                                                           \\
  ll a, b, c;                                                                  \\
  cin >> a >> b >> c;
#define in4(a, b, c, d)                                                        \\
  ll a, b, c, d;                                                               \\
  cin >> a >> b >> c >> d;
#define in5(a, b, c, d, e)                                                     \\
  ll a, b, c, d, e;                                                            \\
  cin >> a >> b >> c >> d >> e;
#define lelo(b)                                                                \\
  for (auto &i : b)                                                            \\
    cin >> i;
#define ff first
#define ss second
#define call(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define show(x)                                                                \\
  for (auto t : x)                                                             \\
    cout << t << " ";
#define pb push_back
#define bhar(s, v) memset(s, v, sizeof(s))
#define endl "\\n"
#define ce(x) cout << x << "\\n";
#define nl cout << endl;
#define jaldi                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
#define dekh_lo ce("dekh_lo");
#define sz(x) (ll) x.size()
#define re return

void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\\'' << x << '\\''; }
void __print(const char *x) { cerr << '\\"' << x << '\\"'; }
void __print(const string &x) { cerr << '\\"' << x << '\\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x)
    cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cerr << ", ";
  _print(v...);
}
#ifndef ONLINE_JUDGE
#define debug(x...)                                                            \\
  cerr << "[" << #x << "] = [";                                                \\
  _print(x)
#else
#define debug(x...)
#endif

typedef pair<ll, ll> pii;
typedef vector<pii> vii;
typedef vector<ll> vi;

const ll mod = 1e9 + 7;
const ll N = 4e5 + 5;

/*

*/

vi findDivisors(ll n) {
  vi div(n + 1, 0);
  for (ll i = 1; i <= n; i++) {
    for (ll j = 1; j * i <= n; j++)
      div[i * j]++;
  }
  re div;
}

void solve() {
  in(n);
  vi get = findDivisors(n - 1);
  ll ans = 0;
  for (ll i = 1; i < sz(get); i++) {
    ans += get[i];
  }
  ce(ans);
}

int32_t main() {
  // jaldi
  ll t;
  // cin>>t;
  t = 1;
  while (t--) {
    solve();
  }
}

/*

*/


using namespace std;
#include <bits/stdc++.h>
#define frr(i, r, l) for (int i = r; i >= l; --i)
#define fr(i, l, r) for (int i = l; i < r; ++i)
#define forit(it, type, var)                                                   \\
  for (type::iterator it = var.begin(); it != var.end(); it++)
#define ii pair<int, int>
#define iii pair<int, ii>
#define MEMS(a, b) memset(a, b, sizeof(a))
#define fi first
#define se second
#define m_p make_pair
#define pb push_back
#define ll long long
#define ld long double
typedef pair<ll, ll> iPair;
priority_queue<ll, vector<ll>, greater<ll>> pq1, pq2;
#define maxN 1000000000000000000
ll power(ll a, ll b) {
  ll res = 1;
  while (b > 0) {
    res *= a;
    b--;
  }
  return res;
}
int main() {

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ll n;
  cin >> n;
  ll ans = 0;
  fr(i, 1, n) {
    ll st = n - i;
    ll st1 = sqrt(st);
    fr(j, 1, st1 + 1) {
      if (st % j == 0) {
        if (j != st / j)
          ans += 2;
        else
          ans++;
      }
    }
  }
  cout << ans << endl;
  return 0;
}

using namespace std;
#include <bits/stdc++.h>
#define frr(i, r, l) for (int i = r; i >= l; --i)
#define fr(i, l, r) for (int i = l; i < r; ++i)
#define forit(it, type, var)                                                   \\
  for (type::iterator it = var.begin(); it != var.end(); it++)
#define ii pair<int, int>
#define iii pair<int, ii>
#define MEMS(a, b) memset(a, b, sizeof(a))
#define fi first
#define se second
#define m_p make_pair
#define pb push_back
#define ll long long
#define ld long double
typedef pair<ll, ll> iPair;
priority_queue<ll, vector<ll>, greater<ll>> pq1, pq2;
#define maxN 1000000000000000000
ll power(ll a, ll b) {
  ll res = 1;
  while (b > 0) {
    res *= a;
    b--;
  }
  return res;
}
ll n, j, done[1000005] = {0}, st[1000005];
int main() {

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  fr(i, 2, 1000000) {
    if (done[i] == 0) {
      for (j = i; j <= 1000000; j = j + i) {
        st[j] = i;
        done[j]++;
      }
    }
  }
  ll ans = 0;
  if (n == 1) {
    cout << "1" << endl;
    return 0;
  }
  st[1] = 1;
  fr(i, 1, n) {
    ll st1 = n - i, temp = 1;
    while (st1 > 1) {
      ll fl = st[st1], cnt = 0;
      while (st1 % fl == 0) {
        cnt++;
        st1 /= fl;
      }
      temp = temp * (cnt + 1);
    }
    ans += temp;
    //  cout<<ans<<endl;
  }
  cout << ans << endl;
  return 0;
}


#include <bits/stdc++.h>
#include <cassert>
#include <numeric>
// #include <boost/multiprecision/cpp_int.hpp>
#define ll long long int
#define CON 100010
const long long mod = 1e9 + 7;
const int INF = 1001001001;
// const int inf=100000;
// const ll ful=1e18;
using namespace std;
// namespace mp = boost::multiprecision;
int main() {
  int n;
  cin >> n;
  ll ans = 0;
  for (int i = 1; i < n; ++i) {
    for (int j = 1; j * j <= n - i; ++j) {
      int num = n - i;
      if (num % j == 0) {
        ans++;
        if (num / j != j) {
          ans++;
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#include <cassert>
#include <numeric>
// #include <boost/multiprecision/cpp_int.hpp>
#define ll long long int
#define CON 100010
const long long mod = 1e9 + 7;
const int INF = 1001001001;
// const int inf=100000;
// const ll ful=1e18;
using namespace std;
// namespace mp = boost::multiprecision;
int main() {
  int n;
  cin >> n;
  ll ans = 0;
  for (int i = 1; i < n; ++i) {
    for (int j = 1; j * j <= n - i; ++j) {
      int num = n - i;
      if (num % j == 0) {
        ans++;
        if (num / j != j) {
          ans++;
        }
      }
    }
  }
  cout << ans;
  return 0;
}


#include <algorithm>
#include <assert.h>
#include <bitset>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <time.h>
#include <unordered_set>
#include <utility>
#include <vector>
// #include <bits/stdc++.h>
using namespace std;
#define speedio                                                                \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\\'' << x << '\\''; }
void __print(const char *x) { cerr << '\\"' << x << '\\"'; }
void __print(const string &x) { cerr << '\\"' << x << '\\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x)
    cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cerr << ", ";
  _print(v...);
}

#ifndef ONLINE_JUDGE
#define deb(x...)                                                              \\
  cerr << "[" << #x << "] = [";                                                \\
  _print(x)
#else
#define deb(x...)
#endif

#define ll long long
#define int long long
#define pb push_back
#define ff first
#define sec second
#define eb emplace_back
#define SORT(a) sort(a.begin(), a.end())
#define SORTR(a) sort(a.rbegin(), a.rend())
#define all(x) x.begin(), x.end()
#define sz(v) ((int)(v.size()))
#define mem(a, val) memset(&a, val, sizeof(a))
#define mid(s, e) ((s) + ((e) - (s)) / 2)
#define endl '\\n'

typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<vi> vvi;
typedef vector<string> vs;

typedef pair<int, int> pii;
typedef vector<pii> vpii;
typedef vector<vpii> vvpii;

#define fo(i, a, b) for (ll i = (int)(a); i <= (int)(b); ++i)
#define fr(i, b) for (ll i = (int)0; i < (int)(b); ++i)
#define rf(i, a, b) for (ll i = (ll)(a); i >= (ll)(b); --i)
#define read(a, n)                                                             \\
  for (int i = 0; i < n; ++i)                                                  \\
    cin >> a[i];
#define show(a, n)                                                             \\
  for (int i = 0; i < n; ++i)                                                  \\
    cout << a[i] << ' ';                                                       \\
  cout << endl;

template <typename... T> void rd(T &...args) { ((cin >> args), ...); }
template <typename... T> void pp(T... args) {
  ((cout << args << " "), ...);
  cout << "\\n";
}

const int MOD = 1e9 + 7;
const int INF = 1e18;

void add(ll &x, ll y) {
  x += y;
  if (x >= MOD)
    x -= MOD;
  if (x < 0)
    x += MOD;
}
// typedef tree<int, null_type, less<int>, rb_tree_tag,
// tree_order_statistics_node_update> oset;

void solve() {

  int n;
  cin >> n;

  vi div(n + 5, 0);

  div[1] = 1;

  for (int i = 2; i < n; i++) {

    for (int j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        if (j * j == i)
          div[i]++;
        else
          div[i] += 2;
      }
    }
    // deb(i);
  }

  int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    ans += (div[i]);
  }

  // deb(div);
  pp(ans);
}

int32_t main() {
  speedio;
  cout << fixed << setprecision(12);
  /*#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
  #endif
  */
  int T = 1; // cin>>T;
  while (T--) {
    solve();
  }

  return 0;
}

#include <algorithm>
#include <assert.h>
#include <bitset>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <time.h>
#include <unordered_set>
#include <utility>
#include <vector>
// #include <bits/stdc++.h>
using namespace std;
#define speedio                                                                \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\\'' << x << '\\''; }
void __print(const char *x) { cerr << '\\"' << x << '\\"'; }
void __print(const string &x) { cerr << '\\"' << x << '\\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x)
    cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cerr << ", ";
  _print(v...);
}

#ifndef ONLINE_JUDGE
#define deb(x...)                                                              \\
  cerr << "[" << #x << "] = [";                                                \\
  _print(x)
#else
#define deb(x...)
#endif

#define ll long long
#define int long long
#define pb push_back
#define ff first
#define sec second
#define eb emplace_back
#define SORT(a) sort(a.begin(), a.end())
#define SORTR(a) sort(a.rbegin(), a.rend())
#define all(x) x.begin(), x.end()
#define sz(v) ((int)(v.size()))
#define mem(a, val) memset(&a, val, sizeof(a))
#define mid(s, e) ((s) + ((e) - (s)) / 2)
#define endl '\\n'

typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<vi> vvi;
typedef vector<string> vs;

typedef pair<int, int> pii;
typedef vector<pii> vpii;
typedef vector<vpii> vvpii;

#define fo(i, a, b) for (ll i = (int)(a); i <= (int)(b); ++i)
#define fr(i, b) for (ll i = (int)0; i < (int)(b); ++i)
#define rf(i, a, b) for (ll i = (ll)(a); i >= (ll)(b); --i)
#define read(a, n)                                                             \\
  for (int i = 0; i < n; ++i)                                                  \\
    cin >> a[i];
#define show(a, n)                                                             \\
  for (int i = 0; i < n; ++i)                                                  \\
    cout << a[i] << ' ';                                                       \\
  cout << endl;

template <typename... T> void rd(T &...args) { ((cin >> args), ...); }
template <typename... T> void pp(T... args) {
  ((cout << args << " "), ...);
  cout << "\\n";
}

const int MOD = 1e9 + 7;
const int INF = 1e18;

void add(ll &x, ll y) {
  x += y;
  if (x >= MOD)
    x -= MOD;
  if (x < 0)
    x += MOD;
}
// typedef tree<int, null_type, less<int>, rb_tree_tag,
// tree_order_statistics_node_update> oset;

void solve() {

  int n;
  cin >> n;

  vi div(n + 5, 0);

  for (int i = 1; i <= n; i++) {

    for (int j = i; j <= n; j += i) {
      ++div[j];
    }
  }

  int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    ans += (div[i]);
  }

  // deb(div);
  pp(ans);
}

int32_t main() {
  speedio;
  cout << fixed << setprecision(12);
  /*#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
  #endif
  */
  int T = 1; // cin>>T;
  while (T--) {
    solve();
  }

  return 0;
}


// ssenseeeeeeeeeeeeeeeeeeeeeeeeeeeee
#include <bits/stdc++.h>
#define startt                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
typedef unsigned long long ull;
typedef long long ll;
#define MOD 1000000007
#define MX 1000000000
#define NMAX 100005
#define MXL 1000000000000000000
#define PI 3.14159265
#define pb push_back
using namespace std;
#define sc second
#define endl '\\n'
#define fr first
// read contraints to make sure its not brute force

int main() {
  startt int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; i++) {
    int now = n - i;
    for (int j = 1; j <= sqrt(now); j++) {
      if (now % j == 0) {
        if (j * j == now) {
          ans++;
          continue;
        }
        ans += 2;
      }
    }
  }
  cout << ans << endl;
}

// ssenseeeeeeeeeeeeeeeeeeeeeeeeeeeee
#include <bits/stdc++.h>
#define startt                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
typedef unsigned long long ull;
typedef long long ll;
#define MOD 1000000007
#define MX 1000000000
#define NMAX 100005
#define MXL 1000000000000000000
#define PI 3.14159265
#define pb push_back
using namespace std;
#define sc second
#define endl '\\n'
#define fr first
// read contraints to make sure its not brute force

int main() {
  ll n;
  cin >> n;
  ll ans = 0;
  for (int i = 1; i <= n; i++) {
    ll a = n / i;
    if (i * a >= n) {
      a--;
    }
    ans += max(0LL, a);
  }
  cout << ans << endl;
}


#include <algorithm>
#include <iostream>
#include <map>
#include <set>
#include <vector>
using namespace std;

int main() {
  long long int N, A, B, C, ans = 0;
  cin >> N;
  for (A = 1; A <= N; A += 1) {
    if (A > N) {
      break;
    }
    for (B = 1; B <= N; B += 1) {
      if (A * B > N) {
        break;
      }
      for (C = 1; C <= N; C += 1) {
        if (A * B + C > N) {
          break;
        }
        if (A * B + C == N) {
          ans += 1;
        }
      }
    }
  }
  cout << ans << endl;
}

#include <algorithm>
#include <cmath>
#include <iostream>
#include <iterator>
#include <set>
#include <unordered_map>
#include <vector>
using namespace std;

int main() {
  unordered_multimap<int, int> mp;
  unordered_map<int, int>::iterator it;
  int N, A, B, C, ans = 0;
  cin >> N;
  for (A = 1; A <= N; A += 1) {
    if (A >= N) {
      break;
    }
    for (B = 1; B <= N; B += 1) {
      if (A * B >= N) {
        break;
      }
      if (A * B < N) {
        mp.insert(pair<int, int>(A, B));
      }
    }
  }
  cout << mp.size() << endl;
}


#include <bits/stdc++.h>
using namespace std;

int main() {
  int N;
  cin >> N;
  int count = 0;
  for (int c = 1; c <= N; c++) {
    for (int i = 1; i <= (N - c); i++) {
      if ((N - c) % i == 0) {
        count++;
      }
    }
  }
  cout << count << endl;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
  int N;
  cin >> N;
  int count = 0;
  int count2 = 0;
  for (int c = 1; c <= N; c++) {
    for (int i = 1; i * i <= (N - c); i++) {
      if ((N - c) % i == 0) {
        count++;
      }
      if (i * i == (N - c)) {
        count2++;
      }
    }
  }
  int ans = 2 * count - count2;
  cout << ans << endl;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int lli;
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
typedef pair<lli, lli> pii;
#define all(vec) vec.begin(), vec.end()
#define ff first
#define ss second
#define pi 3.141592653589
#define inf 4e18
#define MOD 1000000007
#define pb push_back
#define endl "\\n"
#define for1(low, high, k) for (int i = low; i < high; i += k)
#define for2(low, high, k) for (int j = low; j < high; j += k)
#define rev(high, low, k) for (int i = high; i >= low; i -= k)

int main() {
  fast;
  lli n;
  cin >> n;
  lli sum = 0;
  vector<lli> div(n, 0);
  for (int i = 1; i < n; i++) {
    for (int j = 1; j <= sqrt(i); j++) {
      if (i % j == 0) {
        if (j != sqrt(i))
          div[i] += 2;
        else
          div[i]++;
      }
    }
    sum += div[i];
  }
  cout << sum << endl;
}

#include <bits/stdc++.h>

using namespace std;

typedef long long int lli;
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
typedef pair<lli, lli> pii;
#define all(vec) vec.begin(), vec.end()
#define ff first
#define ss second
#define pi 3.141592653589
#define inf 4e18
#define MOD 1000000007
#define pb push_back
#define endl "\\n"
#define for1(low, high, k) for (int i = low; i < high; i += k)
#define for2(low, high, k) for (int j = low; j < high; j += k)
#define rev(high, low, k) for (int i = high; i >= low; i -= k)

int main() {
  fast;
  lli n;
  cin >> n;
  lli sum = 0;
  for (int i = 1; i < n; i++) {
    int k = (n - 1) / i;
    if (k > i)
      sum += (k - i) * 2;
    if (k >= i)
      sum++;
  }
  cout << sum << endl;
}


// THIS IS THE AATMANIRBHAR SOLUTION I FOUND..!!!!!
#include <bits/stdc++.h>
using namespace std;
#define int long long
// #define int double
// #define ll long long
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define P push
#define vvi vector<vector<int>>
#define vi vector<int>
#define vf vector<float>
#define vc vector<char>
#define vs vector<string>
#define pii vector<pair<int, int>>
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define sort(v) sort(all(v))
#define rep(i, a, b) for (int i = a; i < b; i++)
#define per(j, a, b) for (int j = a - 1; j >= b; j--)
#define binod                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
const int N = 1e9 + 7, N1 = 1e7 + 5, N2 = 1e6 + 3, N3 = 1e5 + 3;
#define IX INT_MAX
#define IM INT_MIN

// vi v(N2,0);
// void SieveOfEratosthenes(int n)
// {
//     bool prime[n+1];
//     memset(prime, true, sizeof(prime));
//     for (int p=2; p*p<=n; p++)
//     {
//         if (prime[p] == true)
//         {
//             for (int i=p*p; i<=n; i += p)
//                 prime[i] = false;
//         }
//     }
//     for (int p=2; p<=n; p++)
//       if (prime[p])
//           v[p]=1;
// }

void solve() {
  int n;
  cin >> n;
  int cnt = 0;
  vi ans(n + 5, 0);
  for (int i = 1; i < sqrt(n); i++) {
    for (int j = i; j < n; j++) {
      if (i == j and i * i < n)
        cnt--;
      if (i * j < n)
        cnt += 2;
      else
        break;
    }
    // cout<<cnt<<" ";
  }
  cout << cnt;
}

signed main() {
  binod;
  int t1 = 1;
  cin >> t1;
  // cout<<fixed<<setprecision(9);
  // SieveOfEratosthenes(N2);
  while (t1--) {
    solve();
    cout << endl;
  }
}

// Don't judge me or anyone
// this is life,
// not a reality show

// THIS IS THE AATMANIRBHAR SOLUTION I FOUND..!!!!!
#include <bits/stdc++.h>
using namespace std;
#define int long long
// #define int double
// #define ll long long
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define P push
#define vvi vector<vector<int>>
#define vi vector<int>
#define vf vector<float>
#define vc vector<char>
#define vs vector<string>
#define pii vector<pair<int, int>>
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define sort(v) sort(all(v))
#define rep(i, a, b) for (int i = a; i < b; i++)
#define per(j, a, b) for (int j = a - 1; j >= b; j--)
#define binod                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
const int N = 1e9 + 7, N1 = 1e7 + 5, N2 = 1e6 + 3, N3 = 1e5 + 3;
#define IX INT_MAX
#define IM INT_MIN

void solve() {
  int n;
  cin >> n;
  int cnt = 0;
  vi ans(n + 5, 0);
  for (int i = 1; i < sqrt(n); i++) {
    for (int j = i; j < n; j++) {
      if (i == j and i * i < n)
        cnt++;
      else if (i * j < n)
        cnt += 2;
      else
        break;
    }
  }
  cout << cnt;
}

signed main() {
  binod;
  int t1 = 1;
  // cin>>t1;
  //  cout<<fixed<<setprecision(9);
  while (t1--) {
    solve();
    cout << endl;
  }
}

// Don't judge me or anyone
// this is life,
// not a reality show

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc


#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define rep1(i, n) for (int i = 1; i < (n); ++i)
using namespace std;
typedef long long ll;

pair<map<ll, ll>, set<ll>> prime_factor(ll n) {
  map<ll, ll> res;
  set<ll> primes;
  for (ll i = 2; i * i <= n; ++i) {
    if (n % i == 0)
      primes.insert(i);

    while (n % i == 0) {
      ++res[i];
      n /= i;
    }
  }
  if (n != 1) {
    res[n] = 1;
    primes.insert(n);
  }
  return make_pair(res, primes);
}

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);

  ll n;
  cin >> n;

  map<ll, ll> mp;
  ll res = 0;
  for (ll i = 1; i < n; ++i) {
    if (i == 1)
      res += 1;
    else {
      mp = prime_factor(i).first;
      ll sm = 1;
      for (auto k : mp) {
        sm *= (k.second + 1);
      }
      res += sm;
    }
  }

  cout << res << endl;

  return 0;
}

#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define rep1(i, n) for (int i = 1; i < (n); ++i)
using namespace std;
typedef long long ll;

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);

  ll n;
  cin >> n;

  ll res = 1;
  rep1(b, n - 1) {
    for (int nc = b; nc <= n - 1; nc += b) {
      ++res;
    }
  }

  cout << res << endl;

  return 0;
}


#include <bits/stdc++.h>
#define lld long long int
#define vec vector<lld>
#define pll pair<lld, lld>
#define pb push_back
#define ss second
#define ff first
#define mp make_pair
#define mod 1000000007
#define answer(x) cout << endl << "answer : " << x << endl << endl;
#define op(x) cout << x << endl;
#define maxn 500005
#define lld_max 5000000000000000000
#define messi                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
using namespace std;
int main() {
  messi lld t = 1; // cin>>t;
  while (t--) {
    lld n = 0, m = 0, k = 0, i = 0, j = 0, p = 0, q = 0, x = 0, y = 0, z = 0,
        ans = 0, cnt = 0, l = 0, r = 0, mid = 0, lo = 0, hi = 0;
    string s;
    bool flag = false;
    cin >> n;
    for (i = 1; i < n; i++) {
      for (j = 1; j * j <= i; j++) {
        if (i % j == 0) {
          if (j == (i / j))
            cnt++;
          else
            cnt += 2;
        }
      }
    }
    op(cnt);
  }
  return 0;
}
/*  CODED BY:-
 ________________________________________
|            __        __                |
|  /\\   /\\  |__)  /\\  |  \\ |__| \\ /  /\\  |
| /~~\\ /~~\\ |  \\ /~~\\ |__/ |  |  |  /~~\\ |
|________________________________________|

*/

#include <bits/stdc++.h>
#define lld long long int
#define vec vector<lld>
#define pll pair<lld, lld>
#define pb push_back
#define ss second
#define ff first
#define mp make_pair
#define mod 1000000007
#define answer(x) cout << endl << "answer : " << x << endl << endl;
#define op(x) cout << x << endl;
#define maxn 500005
#define lld_max 5000000000000000000
#define messi                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
using namespace std;
int main() {
  messi lld t = 1; // cin>>t;
  while (t--) {
    lld n = 0, m = 0, k = 0, i = 0, j = 0, p = 0, q = 0, x = 0, y = 0, z = 0,
        ans = 0, cnt = 0, l = 0, r = 0, mid = 0, lo = 0, hi = 0;
    string s;
    bool flag = false;
    cin >> n;
    for (i = 1; i < n; i++)
      cnt += (n - 1) / i;
    op(cnt);
  }
  return 0;
}
/*  CODED BY:-
 ________________________________________
|            __        __                |
|  /\\   /\\  |__)  /\\  |  \\ |__| \\ /  /\\  |
| /~~\\ /~~\\ |  \\ /~~\\ |__/ |  |  |  /~~\\ |
|________________________________________|

*/


#include <algorithm>
#include <iostream>
#include <string>
#include <unordered_map>
#include <unordered_set>
using namespace std;

int func(int num) {

  int sum = 0;

  for (int i = 1; i <= num; i++) {
    if (num % i == 0) {
      // if((num/i) == i){
      //     sum += 1;
      // }
      // else{
      //     sum += 2;
      // }
      sum += 1;
    }
  }
  return sum;
}

int main() {

  int N = 0;

  cin >> N;

  int count = 0;

  for (int i = 1; i < N; i++) {
    count += func(N - i);
  }

  cout << count << endl;

  return 0;
}

#include <algorithm>
#include <iostream>
#include <string>
#include <unordered_map>
#include <unordered_set>
using namespace std;

int func(int num) {

  int sum = 0;
  int i = 1;

  while (num >= i * i) {
    if (num % i == 0) {
      if (num / i == i) {
        sum += 1;
      } else {
        sum += 2;
      }
    }
    i++;
  }

  return sum;
}

int main() {

  int N = 0;

  cin >> N;

  int count = 0;

  for (int i = 1; i < N; i++) {
    count += func(N - i);
  }

  cout << count << endl;
  return 0;
}


#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <random>
#include <stack>
#include <string>
#include <unordered_map>

using namespace std;
typedef long long ll;
const ll INF = 1000000007;
const ll mod = 1000000007;
#define rep(i, n) for (int i = 0; i < (n); ++i)

int main() {
  ll N;
  cin >> N;
  ll ans = 0;
  for (int i = 1; i <= N; i++) {
    for (int a = 1; a <= N - i; a++) {
      if ((N - i) % a == 0)
        ans++;
    }
  }
  cout << ans << endl;
  return 0;
}

#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <random>
#include <stack>
#include <string>
#include <unordered_map>

using namespace std;
typedef long long ll;
const ll INF = 1000000007;
const ll mod = 1000000007;
#define rep(i, n) for (int i = 0; i < (n); ++i)

int main() {
  ll N;
  cin >> N;
  ll ans = 0;
  for (int i = 1; i < N; i++) {
    ans += floor((double)(N - 1) / i);
  }
  cout << ans << endl;
  return 0;
}


#include <bits/stdc++.h>
// One implementation to rule them all?
#define db double
#define ll long long int
#define ld long double
// #define int           long long int
#define ull unsigned long long
#define fi first
#define se second
#define rep(i, a, n) for (int i = a; i < n; i++)
#define repr(i, n, b) for (int i = n; i >= b; i--)
#define endl '\\n'
#define mem(a, b) memset(a, b, sizeof a)
#define mkp make_pair
#define pb push_back
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))
#define w(t)                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define all(a) a.begin(), a.end()
#define sz(a) int((a).size())
#define debug cerr << " Here. " << endl;
#define dbg(x) cerr << #x << " = " << x << endl;
#define dbgp(x)                                                                \\
  cerr << "[ " << #x << ".fi : " << x.first << ", " << #x                      \\
       << ".se : " << x.second << " ]" << endl
#define dbgs(x)                                                                \\
  cerr << "[ ";                                                                \\
  for (auto i : x)                                                             \\
    cerr << i << " ";                                                          \\
  cerr << " ]" << endl;
#define dbgm(x)                                                                \\
  cerr << "----------" << endl;                                                \\
  for (auto i : x)                                                             \\
    cerr << i.fi << ":" << i.se << endl;                                       \\
  cerr << "----------";
#define printdb(i) printf("%.12lf\\n", i)
#define isOn(S, j) (S & (1 << j))
#define setBit(S, j) (S |= (1 << j))
#define clearBit(S, j) (S &= ~(1 << j))
#define toggleBit(S, j) (S ^= (1 << j))
#define lowBit(S) (S & (-S))
#define setAll(S, n) (S = (1 << n) - 1)
#define turnOffLastBit(S) ((S) & (S - 1))
#define turnOnLastZero(S) ((S) | (S + 1))
// Can use tuples in C++17
using namespace std;
typedef map<int, int> mii;
typedef vector<int> vii;
typedef vector<ll> vll;
typedef vector<vii> vvi;
typedef pair<int, int> pii;
template <class T> using min_heap = priority_queue<T, vector<T>, greater<T>>;
template <class T> using max_heap = priority_queue<T>;
const db PI = acos(-1);
const int INF = 0x3f3f3f3f;
const ll LINF = (ll)2e18;
db eps = 1e-5;
ll mod = 998244353; //   (1000000007LL)
void print(vector<int> &arr) {
  for (int i = 0; i < arr.size(); i++)
    cout << arr[i] << " ";

  cout << endl;
}
void printll(vector<ll> &arr) {
  for (int i = 0; i < arr.size(); i++)
    cout << arr[i] << " ";

  cout << endl;
}

ll ncr(ll n, ll r) {
  r = min(r, n - r);
  ll A[r], i, j, B[r];
  iota(A, A + r, n - r + 1);
  iota(B, B + r, 1);

  ll g;
  for (i = 0; i < r; i++)
    for (j = 0; j < r; j++) {
      if (B[i] == 1)
        break;
      g = __gcd(B[i], A[j]);
      A[j] /= g;
      B[i] /= g;
    }
  ll ans = 1;
  for (i = 0; i < r; i++)
    ans = (ans * A[i] % mod);
  return ans;
}
ll binpow(ll a, ll b, ll m) {
  a %= m;
  ll res = 1;
  while (b > 0) {
    if (b & 1)
      res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}

const int SIZE = 2e5 + 10; // constant SIZE here
bool judge(int a[], int n) {
  static int used[SIZE + 1];
  for (int i = 1; i <= n; i++)
    used[i] = 0;
  for (int i = 0; i < n; i++)
    used[a[i]] = 1;
  for (int i = 1; i <= n; i++) {
    if (!used[i])
      return 0;
  }
  return 1;
}
ll dp[2][SIZE];
ll funct(int turn, int index, vll &arr, int n) {
  if (index >= n)
    return 0;
  if (dp[turn][index] != -1)
    return dp[turn][index];
  ll val1 = LLONG_MAX, val2 = LLONG_MAX;
  if (turn == 0) {
    val1 = (arr[index] == 1) + funct(1 - turn, index + 1, arr, n);
    if (index < n - 1) {
      val2 = (arr[index] == 1) + (arr[index + 1] == 1) +
             funct(1 - turn, index + 2, arr, n);
    }
  } else {
    val1 = funct(1 - turn, index + 1, arr, n);
    if (index < n - 1) {
      val2 = funct(1 - turn, index + 2, arr, n);
    }
  }
  return dp[turn][index] = min(val1, val2);
}
int main() {
  // CONDITION && cout << "YES" || cout << "NO"; cout << '\\n';
  //////////////////////////////////////////////////////////////////
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cerr.tie(NULL);
  // For fast IO
  /////////////////////////////////////////////////////////////////////
  // Have you thought about it enough?
  /////////////////////////////////////////////////////////////////////
  //  std::cout.unsetf ( std::ios::floatfield );  // floatfield not set
  //  std::cout.precision(16);
  //  freopen("input.txt","r",stdin);
  //  freopen("output.txt","w",stdout);
  int n;
  cin >> n;
  ll ans = 0;
  rep(i, 1, n) {
    //	dbg(num);
    for (int ii = 1; ii * ii <= i; ii++) {
      if (i % ii == 0) {
        if (ii == (i / ii)) {
          ans++;
          // cout<<ii<<" "<<(num/ii)<<" "<<i<<endl;
        } else {
          // cout<<ii<<" "<<(num/ii)<<" "<<i<<endl;
          ans += 2;
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}

#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
// One implementation to rule them all?
#define db double
#define ll long long int
#define ld long double
// #define int           long long int
#define ull unsigned long long
#define fi first
#define se second
#define rep(i, a, n) for (int i = a; i < n; i++)
#define repr(i, n, b) for (int i = n; i >= b; i--)
#define endl '\\n'
#define mem(a, b) memset(a, b, sizeof a)
#define mkp make_pair
#define pb push_back
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))
#define w(t)                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define all(a) a.begin(), a.end()
#define sz(a) int((a).size())
#define debug cerr << " Here. " << endl;
#define dbg(x) cerr << #x << " = " << x << endl;
#define dbgp(x)                                                                \\
  cerr << "[ " << #x << ".fi : " << x.first << ", " << #x                      \\
       << ".se : " << x.second << " ]" << endl
#define dbgs(x)                                                                \\
  cerr << "[ ";                                                                \\
  for (auto i : x)                                                             \\
    cerr << i << " ";                                                          \\
  cerr << " ]" << endl;
#define dbgm(x)                                                                \\
  cerr << "----------" << endl;                                                \\
  for (auto i : x)                                                             \\
    cerr << i.fi << ":" << i.se << endl;                                       \\
  cerr << "----------";
#define printdb(i) printf("%.12lf\\n", i)
#define isOn(S, j) (S & (1 << j))
#define setBit(S, j) (S |= (1 << j))
#define clearBit(S, j) (S &= ~(1 << j))
#define toggleBit(S, j) (S ^= (1 << j))
#define lowBit(S) (S & (-S))
#define setAll(S, n) (S = (1 << n) - 1)
#define turnOffLastBit(S) ((S) & (S - 1))
#define turnOnLastZero(S) ((S) | (S + 1))
// Can use tuples in C++17
using namespace std;
typedef map<int, int> mii;
typedef vector<int> vii;
typedef vector<ll> vll;
typedef vector<vii> vvi;
typedef pair<int, int> pii;
template <class T> using min_heap = priority_queue<T, vector<T>, greater<T>>;
template <class T> using max_heap = priority_queue<T>;
const db PI = acos(-1);
const int INF = 0x3f3f3f3f;
const ll LINF = (ll)2e18;
db eps = 1e-5;
ll mod = 998244353; //   (1000000007LL)
void print(vector<int> &arr) {
  for (int i = 0; i < arr.size(); i++)
    cout << arr[i] << " ";

  cout << endl;
}
void printll(vector<ll> &arr) {
  for (int i = 0; i < arr.size(); i++)
    cout << arr[i] << " ";

  cout << endl;
}

ll ncr(ll n, ll r) {
  r = min(r, n - r);
  ll A[r], i, j, B[r];
  iota(A, A + r, n - r + 1);
  iota(B, B + r, 1);

  ll g;
  for (i = 0; i < r; i++)
    for (j = 0; j < r; j++) {
      if (B[i] == 1)
        break;
      g = __gcd(B[i], A[j]);
      A[j] /= g;
      B[i] /= g;
    }
  ll ans = 1;
  for (i = 0; i < r; i++)
    ans = (ans * A[i] % mod);
  return ans;
}
ll binpow(ll a, ll b, ll m) {
  a %= m;
  ll res = 1;
  while (b > 0) {
    if (b & 1)
      res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}

const int SIZE = 2e5 + 10; // constant SIZE here
bool judge(int a[], int n) {
  static int used[SIZE + 1];
  for (int i = 1; i <= n; i++)
    used[i] = 0;
  for (int i = 0; i < n; i++)
    used[a[i]] = 1;
  for (int i = 1; i <= n; i++) {
    if (!used[i])
      return 0;
  }
  return 1;
}
ll dp[2][SIZE];
ll funct(int turn, int index, vll &arr, int n) {
  if (index >= n)
    return 0;
  if (dp[turn][index] != -1)
    return dp[turn][index];
  ll val1 = LLONG_MAX, val2 = LLONG_MAX;
  if (turn == 0) {
    val1 = (arr[index] == 1) + funct(1 - turn, index + 1, arr, n);
    if (index < n - 1) {
      val2 = (arr[index] == 1) + (arr[index + 1] == 1) +
             funct(1 - turn, index + 2, arr, n);
    }
  } else {
    val1 = funct(1 - turn, index + 1, arr, n);
    if (index < n - 1) {
      val2 = funct(1 - turn, index + 2, arr, n);
    }
  }
  return dp[turn][index] = min(val1, val2);
}
int main() {
  // CONDITION && cout << "YES" || cout << "NO"; cout << '\\n';
  //////////////////////////////////////////////////////////////////
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cerr.tie(NULL);
  // For fast IO
  /////////////////////////////////////////////////////////////////////
  // Have you thought about it enough?
  /////////////////////////////////////////////////////////////////////
  //  std::cout.unsetf ( std::ios::floatfield );  // floatfield not set
  //  std::cout.precision(16);
  //  freopen("input.txt","r",stdin);
  //  freopen("output.txt","w",stdout);
  int n;
  cin >> n;
  ll ans = 0;
  rep(i, 1, n) {
    //	dbg(num);
    for (int ii = 1; ii * ii < i; ii++) {
      if (i % ii == 0) {
        ans += 2;
      }
    }
    int s = sqrt(i);
    if (s * s == i)
      ans++;
  }
  cout << ans << endl;
  return 0;
}


#include <iostream>
using namespace std;

int main() {
  int n = 0;
  cin >> n;

  int count = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (i * j >= n)
        break;
      for (int k = 1; k <= n; ++k) {
        if (i * j + k == n) {
          ++count;
        }
      }
    }
  }
  cout << count;
  return 0;
}

#include <iostream>
using namespace std;

int main() {
  int n = 0;
  cin >> n;
  bool over = false;

  int count = 0;
  for (int i = 1; i < n; ++i) {
    for (int j = 1; j < n; ++j) {
      int a = i * j;
      if (a >= n) {
        // cout << "e" <<  endl;
        break;
      }
      // cout << a << endl;

      for (int k = n - a; k < n; ++k) {
        int ans = i * j + k;
        // cout <<ans<< endl;
        // cout << "i " << i << " j " << j << " k " << k << endl;
        if (ans < n) {
          continue;
        } else if (ans > n) {
          break;
        }
        ++count;
        break;
      }
    }
  }
  cout << count;
  return 0;
}