#include <bits/stdc++.h>
#include <cstdlib>
#include <numeric>
#define ll long long int
#define all(x) x.begin(), x.end()

#define fastio                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)

#define v vector<long long int>
#define vv vector<int>
#define gcd(m, n) __gcd(m, n)
#define vp vector<pair<long long int, long long int>>
#define pb push_back
#define mp make_pair
#define pp pop_back
#define iter vector<int>::iterator
#define pa pair<long long int, long long int>
#define f(i, n) for (ll i = 0; i < n; i++)
#define loop(i, a, n) for (ll i = a; i < n; i += 1)
#define fe(d, e) for (auto d : e)
#define mod 1000000007
#define F first
#define S second
#define sett set<long long int>
#define um unordered_map<ll, ll>
#define N 100005LL
using namespace std;

#define T (sizeof(arr) / sizeof(arr[0]))

// Returns nCr % p using Fermat's little
// theorem.
void SieveOfEratosthenes(int n, bool prime[], bool primesquare[], int a[]) {
  // Create a boolean array "prime[0..n]" and
  // initialize all entries it as true. A value
  // in prime[i] will finally be false if i is
  // Not a prime, else true.
  for (int i = 2; i <= n; i++)
    prime[i] = true;

  // Create a boolean array "primesquare[0..n*n+1]"
  // and initialize all entries it as false. A value
  // in squareprime[i] will finally be true if i is
  // square of prime, else false.
  for (int i = 0; i <= (n * n + 1); i++)
    primesquare[i] = false;

  // 1 is not a prime number
  prime[1] = false;

  for (int p = 2; p * p <= n; p++) {
    // If prime[p] is not changed, then
    // it is a prime
    if (prime[p] == true) {
      // Update all multiples of p
      for (int i = p * 2; i <= n; i += p)
        prime[i] = false;
    }
  }

  int j = 0;
  for (int p = 2; p <= n; p++) {
    if (prime[p]) {
      // Storing primes in an array
      a[j] = p;

      // Update value in primesquare[p*p],
      // if p is prime.
      primesquare[p * p] = true;
      j++;
    }
  }
}

// Function to count divisors
ll countDivisors(ll n) {
  // If number is 1, then it will have only 1
  // as a factor. So, total factors will be 1.
  if (n == 1)
    return 1;

  bool prime[n + 1], primesquare[n * n + 1];

  int a[n]; // for storing primes upto n

  // Calling SieveOfEratosthenes to store prime
  // factors of n and to store square of prime
  // factors of n
  SieveOfEratosthenes(n, prime, primesquare, a);

  // ans will contain total number of distinct
  // divisors
  ll ans = 1;

  // Loop for counting factors of n
  for (ll i = 0;; i++) {
    // a[i] is not less than cube root n
    if (a[i] * a[i] * a[i] > n)
      break;

    // Calculating power of a[i] in n.
    ll cnt = 1;           // cnt is power of prime a[i] in n.
    while (n % a[i] == 0) // if a[i] is a factor of n
    {
      n = n / a[i];
      cnt = cnt + 1; // incrementing power
    }

    // Calculating the number of divisors
    // If n = a^p * b^q then total divisors of n
    // are (p+1)*(q+1)
    ans = ans * cnt;
  }

  // if a[i] is greater than cube root of n

  // First case
  if (prime[n])
    ans = ans * 2;

  // Second case
  else if (primesquare[n])
    ans = ans * 3;

  // Third case
  else if (n != 1)
    ans = ans * 4;

  return ans; // Total divisors
}

vector<vector<ll>> graph(200005);
ll visited[200005];

void dfs(ll node) {
  visited[node] = 1;
  cout << node << " ";
  for (ll u : graph[node]) {
    if (!visited[u])
      dfs(u);
  }
}
ll factor(ll n) {
  ll cnt = 0;
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      if (i == n / i)
        cnt += 1;
      else
        cnt += 2;
    }
  }
  return cnt;
}

auto solve() {
  ll n;
  cin >> n;
  ll ans = 0;
  loop(i, 1, n) {
    ll x = countDivisors(n - i);
    ans += (x);
  }
  cout << ans << "\\n";
}

int main() {
  ll t = 1;
  fastio;

  while (t--)
    solve();
}

#include <bits/stdc++.h>
#include <cstdlib>
#include <numeric>
#define ll long long int
#define all(x) x.begin(), x.end()

#define fastio                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)

#define v vector<long long int>
#define vv vector<int>
#define gcd(m, n) __gcd(m, n)
#define vp vector<pair<long long int, long long int>>
#define pb push_back
#define mp make_pair
#define pp pop_back
#define iter vector<int>::iterator
#define pa pair<long long int, long long int>
#define f(i, n) for (ll i = 0; i < n; i++)
#define loop(i, a, n) for (ll i = a; i < n; i += 1)
#define fe(d, e) for (auto d : e)
#define mod 1000000007
#define F first
#define S second
#define sett set<long long int>
#define um unordered_map<ll, ll>
#define N 100005LL
using namespace std;

#define T (sizeof(arr) / sizeof(arr[0]))

const ll MAX = 1000001;

// array to store prime factors
ll factor[MAX] = {0};

// function to generate all prime factors
// of numbers from 1 to 10^6
void generatePrimeFactors() {
  factor[1] = 1;

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

  // Initializes all multiples of 2 with 2
  for (ll 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 (ll 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 (ll 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
ll calculateNoOFactors(ll n) {
  if (n == 1)
    return 1;

  int ans = 1;

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

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

  // reduces to the next number after prime
  // factorization of n
  ll 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;
}

auto solve() {
  ll n;
  cin >> n;
  ll ans = 0;
  loop(i, 1, n) {
    ll x = calculateNoOFactors(n - i);
    ans += (x);
  }
  cout << ans << "\\n";
}

int main() {
  ll t = 1;
  generatePrimeFactors();

  while (t--)
    solve();
}


/// Bismillahir Rahmanir Rahim
#include <bits/stdc++.h>
#define u64 uint64_t
#define ll long long
#define endl "\\n"
#define PI acos(-1)
#define fi first
#define si second
#define mkp make_pair
#define pb push_back
#define set0(arr) memset(arr, 0, sizeof(arr))
#define setinf(arr) memset(arr, 126, sizeof(arr))
#define all(x) (x).begin(), (x).end()
#define sz(v) ((int)(v).size())
#define IOS                                                                    \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
using namespace std;
using pll = pair<ll, ll>;
using vl = vector<ll>;
using vpll = vector<pll>;
using mll = map<ll, ll>;
using mcl = map<char, ll>;
using msl = map<string, ll>;
using sl = set<ll>;
using sc = set<char>;
using dl = deque<ll>;
const int N = 1e6 + 5;

ll mod = 1e9 + 7;
vl adj[N];
vpll adjc[N];
ll vis[N];
ll arr[N];

ll fun(ll n) {
  ll cnt = 0;
  for (ll i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      if (n / i == i)
        cnt++;
      else
        cnt += 2;
    }
  }
  return cnt;
}

int main() {
  IOS;
  ll a, b, c, d, n, m, p, x, y, z, i, j, k, f = 0, tc, cnt = 0, sum = 0,
                                            mul = 1, mi = 1e18, ma = -1e18, cs;
  string str;
  char ch;
  double db;
  ll l, r;
  // code

  cin >> n;
  for (int i = 2; i < n; i++) {
    sum += fun(i);
  }
  sum++;
  cout << sum << endl;

  // code
  return 0;
}

/// Bismillahir Rahmanir Rahim
#include <bits/stdc++.h>
#define u64 uint64_t
#define ll long long
#define endl "\\n"
#define PI acos(-1)
#define fi first
#define si second
#define mkp make_pair
#define pb push_back
#define set0(arr) memset(arr, 0, sizeof(arr))
#define setinf(arr) memset(arr, 126, sizeof(arr))
#define all(x) (x).begin(), (x).end()
#define sz(v) ((int)(v).size())
#define IOS                                                                    \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
using namespace std;
using pll = pair<ll, ll>;
using vl = vector<ll>;
using vpll = vector<pll>;
using mll = map<ll, ll>;
using mcl = map<char, ll>;
using msl = map<string, ll>;
using sl = set<ll>;
using sc = set<char>;
using dl = deque<ll>;
const int N = 1e6 + 5;

ll mod = 1e9 + 7;
vl adj[N];
vpll adjc[N];
ll vis[N];
ll arr[N];

ll fun(ll n) {

  ll div[n + 1];
  memset(div, 0, sizeof div);

  // For every number from 1 to n
  for (ll i = 1; i <= n; i++) {

    // Increase divisors count for
    // every number divisible by i
    for (ll j = 1; j * i <= n; j++)
      div[i * j]++;
  }

  // Print the divisors
  ll sum = 0;
  for (ll i = 1; i <= n; i++)
    sum += div[i];
  return sum;
}

int main() {
  IOS;
  ll a, b, c, d, n, m, p, x, y, z, i, j, k, f = 0, tc, cnt = 0, sum = 0,
                                            mul = 1, mi = 1e18, ma = -1e18, cs;
  string str;
  char ch;
  double db;
  ll l, r;
  // code

  cin >> n;
  cout << fun(n - 1) << endl;

  // code
  return 0;
}


#include <bits/stdc++.h>
#include <iostream>
using namespace std;
// 素因数分解
template <typename T> map<T, T> prime_factor(T n) {
  map<T, T> ret;
  for (T i = 2; i * i <= n; i++) {
    T tmp = 0;
    while (n % i == 0) {
      tmp++;
      n /= i;
    }
    ret[i] = tmp;
  }
  if (n != 1)
    ret[n] = 1;
  return ret;
}
/*  divisor_num(n)
    入力：整数 n
    出力：nの約数の個数
    計算量：O(√n)
*/
template <typename T> T divisor_num(T N) {
  map<T, T> pf = prime_factor(N);
  T ret = 1;
  for (auto p : pf) {
    ret *= (p.second + 1);
  }
  return ret;
}
long long N;
int main() {
  cin >> N;
  long long x = 0;
  for (int i = 1; i < N; i++) {
    x = x + divisor_num(N - i);
  }
  cout << x;
  return 0;
}

#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int num(int a) {
  int ans = 1;

  for (int i = 2; i <= sqrt(a); i++) {
    int cnt = 0;
    while (a % i == 0) {
      cnt++;
      a /= i;
    }
    ans *= (cnt + 1);
    if (a == 1)
      break;
  }
  if (a != 1)
    ans *= 2;

  return ans;
}
int N;
int main() {
  cin >> N;
  int x = 0;
  for (int i = 1; i < N; i++) {
    x = x + num(N - i);
  }
  cout << x;
  return 0;
}


#include <bits/stdc++.h>
/*
CE 头文件
#include<algorithm>
#include<bitset>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<deque>
#include<iostream>
#include<list>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<string>
#include<vector>

*/
using namespace std;
#define rep(i, a, n) for (int i = a; i <= n; i++)
#define per(i, a, n) for (int i = n; i >= a; i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#define mem(a, b) memset(a, b, sizeof(a))
#define ios                                                                    \\
  std::ios::sync_with_stdio(false);                                            \\
  std::cin.tie(0);                                                             \\
  std::cout.tie(0);
// ios和scanf,printf不能混用.即用ios必须全部cin,cout.
typedef vector<int> VI;
typedef long long ll;
typedef pair<int, int> PII;
const ll mod = 1000000007;

ll ksm(ll a, ll b) {
  ll res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1)
      res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
const int N = 110;
PII a[N];
int n;
int divide(int x) {
  int sum = 0;
  for (int i = 1; i <= sqrt(x); i++) {
    if (x % i == 0) {
      sum += 2;
    }
    if (i * i == x)
      sum--;
  }
  return sum;
}
int main() {
  scanf("%d", &n);
  ll ans = 0;
  rep(i, 1, n - 1) { ans = ans + 1ll * divide(i); }
  printf("%lld", ans);
  return 0;
}

#include <bits/stdc++.h>
/*
CE 头文件
#include<algorithm>
#include<bitset>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<deque>
#include<iostream>
#include<list>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<string>
#include<vector>

*/
using namespace std;
#define rep(i, a, n) for (int i = a; i <= n; i++)
#define per(i, a, n) for (int i = n; i >= a; i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#define mem(a, b) memset(a, b, sizeof(a))
#define ios                                                                    \\
  std::ios::sync_with_stdio(false);                                            \\
  std::cin.tie(0);                                                             \\
  std::cout.tie(0);
// ios和scanf,printf不能混用.即用ios必须全部cin,cout.
typedef vector<int> VI;
typedef long long ll;
typedef pair<int, int> PII;
const ll mod = 1000000007;

ll ksm(ll a, ll b) {
  ll res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1)
      res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
const int N = 110;
PII factor[N];
int n, k;

int main() {
  scanf("%d", &n);
  n--;
  ll ans = 0;
  for (int i = 1; i <= n; i++) {
    ans += 1ll * n / i;
  }

  printf("%lld", ans);
  return 0;
}


// Problem : C - A x B + C
// Contest : AtCoder - AtCoder Beginner Contest 179
// URL : https://atcoder.jp/contests/abc179/tasks/abc179_c
// Memory Limit : 1024 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include <bits/stdc++.h>
using namespace std;
#define endl "\\n"
#define int long long
int mod = 1e9 + 7;
int po(int x, int y, int m) {
  if (y == 0)
    return 1;
  int t = po(x, y / 2, m) % m;
  t = (t * t) % m;
  if (y & 1)
    return (t * x) % m;
  return t % m;
}

int div(int n) {
  int count = 0;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0) {
      if (n / i == i)
        count += 1;

      else
        count += 2;
    }
  }
  return count;
}

signed main() {

  // #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(0);

  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; ++i) {
    ans += div(i);
  }
  cout << ans << endl;
  return 0;
}

// Problem : C - A x B + C
// Contest : AtCoder - AtCoder Beginner Contest 179
// URL : https://atcoder.jp/contests/abc179/tasks/abc179_c
// Memory Limit : 1024 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include <bits/stdc++.h>
using namespace std;
#define endl "\\n"
#define int long long
int mod = 1e9 + 7;
int po(int x, int y, int m) {
  if (y == 0)
    return 1;
  int t = po(x, y / 2, m) % m;
  t = (t * t) % m;
  if (y & 1)
    return (t * x) % m;
  return t % m;
}

const int mx = 1000001;
vector<bool> prim(mx, true);

void seive() {
  for (int p = 2; p * p <= 1000001; p++) {
    if (prim[p] == true)
      for (int i = p * p; i <= 1000001; i += p)
        prim[i] = false;
  }
}

int div(int n) {
  int total = 1;
  for (int p = 2; p <= n; p++) {
    if (prim[p]) {
      int count = 0;
      if (n % p == 0) {
        while (n % p == 0) {
          n = n / p;
          count++;
        }
        total *= (count + 1);
      }
    }
  }
  return total;
}

signed main() {

  // #ifndef ONLINE_JUDGE
  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);
  // #endif

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(0);

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


#include <iostream>
using namespace std;

int main() {
  int n;
  cin >> n;
  long long ans = 0;
  for (int i = 1; i < n; i++) {
    int temp = n - i;
    for (int f = 1; f * f <= temp; f++) {
      if (temp % f == 0)
        ans += 2;
      if (f * f == temp)
        ans -= 1;
    }
  }
  cout << ans << endl;
}

#include <iostream>
using namespace std;

int main() {
  int n;
  cin >> n;
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      long long temp = (i * j);
      if (temp >= n)
        break;
      ans++;
    }
  }
  cout << ans << endl;
}


#include <algorithm>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <vector>

#define DOLL long double
#define LOLI long long int
using namespace std;

const long C_10PW9 = 1000000000;
const int ULCODE = 32;

int divc(int s) {
  int r = 0;
  int sq = sqrt(s);
  for (int i = 1; i <= sq; i++) {
    if (s % i == 0) {
      r++;
      if (s / i != i) {
        r++;
      }
    }
  }
  return r;
}
int main() {
  int n;
  cin >> n;
  int f = 0;
  for (int i = 1; i < n; i++) {
    f += divc(i);
  }
  cout << f << endl;
  return 0;
}

#include <algorithm>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <vector>

#define DOLL long double
#define LOLI long long int
using namespace std;

const long C_10PW9 = 1000000000;
const int ULCODE = 32;

int divc(int s) {
  int r = 0;
  int sq = sqrt(s);
  for (int i = 1; i <= sq; i++) {
    if (s % i == 0) {
      r++;
      if (s / i != i) {
        r++;
      }
    }
  }
  return r;
}
int main() {
  int n;
  cin >> n;
  int f = 0;
  for (int i = 1; i < n; i++) {
    int a = (n - 1) / i;
    f += a;
  }
  cout << f << endl;
  return 0;
}


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

ll count_div(ll n) {
  int cnt = 0;
  for (ll i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      if (n / i == i)
        cnt++;
      else
        cnt += 2;
    }
  }
  return cnt;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);

  ll n;
  cin >> n;

  ll ans = 0;
  for (ll i = 1; i < n; i++) {
    ans += count_div(n - i);
  }
  cout << ans << "\\n";
}

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

int count_div(int n) {
  int cnt = 0;
  map<int, int> mp;
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      while (n % i == 0) {
        cnt++;
        n = n / i;
      }
      mp[i] = cnt;
      cnt = 0;
    }
  }
  if (n > 1)
    mp[n]++;
  int ans = 1;

  for (auto x : mp) {
    ans *= (x.second + 1);
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);

  ll n;
  cin >> n;

  ll ans = 0;
  for (ll i = 1; i < n; i++) {
    ans += count_div(n - i);
  }
  cout << ans << "\\n";
}


#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set                                                            \\
  tree<int, null_type, less<int>, rb_tree_tag,                                 \\
       tree_order_statistics_node_update>
using namespace std;
#define ll long long int
#define ld long double
#define ff first
#define ss second
#define endl '\\n'
#define pb push_back
#define t_case                                                                 \\
  ll tt;                                                                       \\
  cin >> tt;                                                                   \\
  while (tt--)
#define all(v) v.begin(), v.end()
#define ub(a, x) upper_bound(all(a), x) - a.begin()
#define lb(a, x) lower_bound(all(a), x) - a.begin()
#define fr(a, b, c) for (ll a = b; a < c; a++)
#define take(xx, n)                                                            \\
  for (int i = 0; i < n; i++)                                                  \\
    cin >> xx[i];
#define take1(xx, n)                                                           \\
  for (int i = 1; i <= n; i++)                                                 \\
    cin >> xx[i];
#define fastio                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
const auto inf = LLONG_MAX;

int main() {
  fastio
  // t_case
  {
    ll sum = 0, f = 1, ans = 0, n, m = 1, mx = -inf, mn = inf, x, y, k;
    cin >> n;

    fr(i, 1, n) {
      for (int j = 1; j * j <= i; j++) {
        if (i % j == 0) {
          if ((i / j) == j)
            ans++;
          else
            ans += 2;
        }
      }
    }
    cout << ans;
    cout << endl;
  }
  return 0;
}

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set                                                            \\
  tree<int, null_type, less<int>, rb_tree_tag,                                 \\
       tree_order_statistics_node_update>
using namespace std;
#define ll long long int
#define ld long double
#define ff first
#define ss second
#define endl '\\n'
#define pb push_back
#define t_case                                                                 \\
  ll tt;                                                                       \\
  cin >> tt;                                                                   \\
  while (tt--)
#define all(v) v.begin(), v.end()
#define ub(a, x) upper_bound(all(a), x) - a.begin()
#define lb(a, x) lower_bound(all(a), x) - a.begin()
#define fr(a, b, c) for (ll a = b; a < c; a++)
#define take(xx, n)                                                            \\
  for (int i = 0; i < n; i++)                                                  \\
    cin >> xx[i];
#define take1(xx, n)                                                           \\
  for (int i = 1; i <= n; i++)                                                 \\
    cin >> xx[i];
#define fastio                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
const auto inf = LLONG_MAX;

int main() {
  fastio
  // t_case
  {
    ll sum = 0, f = 1, ans = 0, n, m = 1, mx = -inf, mn = inf, x, y, k;
    cin >> n;

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


#include <bits/stdc++.h>
// #include <boost/multiprecision/cpp_int.hpp>
// using namespace boost::multiprecision;

using namespace std;

// #Rohitpratap311
// #Keep Calm And Stay Happy

typedef long long ll;
typedef long double ld;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ll t = 1;
  // cin>>t;
  while (t--) {
    int n;
    cin >> n;
    ll ans = 0;
    for (int c = 1; c < n; ++c) {
      int val = n - c;
      ll no = 0;
      for (ll i = 1; i * i <= val; ++i) {
        if (val % i == 0)
          no += 2;
      }
      if (int(sqrt(val)) * int(sqrt(val)) == val) {
        no -= 1;
      }
      ans += no;
    }
    cout << ans;
  }
  return 0;
}

#include <bits/stdc++.h>
// #include <boost/multiprecision/cpp_int.hpp>
// using namespace boost::multiprecision;

using namespace std;

// #Rohitpratap311
// #Keep Calm And Stay Happy

typedef long long ll;
typedef long double ld;

int main() {
  // freopen("input.txt","r",stdin);
  // freopen("output.txt","w",stdout);
  // ios::sync_with_stdio(0);
  // cin.tie(0);
  int n;
  cin >> n;
  ll ans = 0;
  for (int c = 1; c < n; ++c) {
    int val = n - c;
    ll no = 0;
    for (int i = 1; i * i <= val; ++i) {
      if (val % i == 0)
        no += 2;
    }
    if (int(sqrt(val)) * int(sqrt(val)) == val) {
      no -= 1;
    }
    ans += no;
  }
  cout << ans;
  return 0;
}


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

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

  long long ans = 0;

  for (long i = 1; i < n; i++) {
    long tmp = n - i;
    ans += solv(tmp);
  }
  cout << ans;
  return 0;
}

long solv(long n) {
  long rt = sqrt(n);
  long cnt = 0;
  for (long i = 1; i <= rt; i++) {
    if (n % i == 0)
      cnt++;
  }

  cnt *= 2;
  if ((rt * rt) == n)
    cnt--;
  return cnt;
}

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

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

  long long ans = 0;

  for (long i = 1; i < n; i++) {
    long x = n / i;
    if (n % i == 0)
      x--;
    ans += x;
  }
  cout << ans;
  return 0;
}


#include <bits/stdc++.h>
#define IOS                                                                    \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
#define ll unsigned long long int
#define pii pair<int, int>
#define pll pair<long long int, long long int>
#define pci pair < char, int
#define mii map<int, int>
#define mll map<long long int, long long int>
#define mci map<char, int>
#define umii unordered_map<int, int>
#define umll unordered_map<long long int, long long int>
#define umci unordered_map<char, int>
#define F first
#define S second
#define pb push_back
#define endl '\\n'
#define mod 1000000007
using namespace std;
#define maxval 10003000
ll power(ll x, ll n) {
  ll x1 = 0;
  ll result = 1;
  while (n > 0) {
    if (n % 2 == 1)
      result = (result * x);
    //  if(result>=1000000001) return 0;
    x = (x * x);
    //   if(x>=1000000001) return 0;
    n = n / 2;
  }
  return result;
}
int vowel(char x) {
  if (x == 'a')
    return 1;
  if (x == 'e')
    return 1;
  if (x == 'i')
    return 1;
  if (x == 'o')
    return 1;
  if (x == 'u')
    return 1;
  return 0;
}
ll numb(ll x) {
  ll z = 0;
  for (ll i = 1; i <= sqrt(x); i++) {

    if (x % i == 0) {
      if (i != sqrt(x))
        z = z + 2;
      else
        z++;
    }
  }
  return z;
}
int main() {
  IOS;
  ll t;
  t = 1; // cin>>t;

  while (t--) {
    ll n;
    cin >> n;
    ll ans = 0;
    for (ll i = 1; i < n; i++) {
      ans = ans + numb(n - i);
    }
    cout << ans << "\\n";
  }

  return 0;
}

#include <bits/stdc++.h>
#define IOS                                                                    \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
#define ll unsigned long long int
#define pii pair<int, int>
#define pll pair<long long int, long long int>
#define pci pair < char, int
#define mii map<int, int>
#define mll map<long long int, long long int>
#define mci map<char, int>
#define umii unordered_map<int, int>
#define umll unordered_map<long long int, long long int>
#define umci unordered_map<char, int>
#define F first
#define S second
#define pb push_back
#define endl '\\n'
#define mod 1000000007
using namespace std;
#define maxval 10003000
ll power(ll x, ll n) { // ll x1=0;
  ll result = 1;
  while (n > 0) {
    if (n % 2 == 1)
      result = (result * x);
    //  if(result>=1000000001) return 0;
    x = (x * x);
    //   if(x>=1000000001) return 0;
    n = n / 2;
  }
  return result;
}
int vowel(char x) {
  if (x == 'a')
    return 1;
  if (x == 'e')
    return 1;
  if (x == 'i')
    return 1;
  if (x == 'o')
    return 1;
  if (x == 'u')
    return 1;
  return 0;
}
ll numb(ll x) {
  ll z = sqrt(x);
  if (z * z == x)
    return 1;
  return 0;
}
int main() {
  IOS;
  ll t;
  t = 1; // cin>>t;

  while (t--) {
    ll n;
    cin >> n;
    ll ans = 0;
    ll v = 0;
    for (ll i = 1; i < n; i++) {
      //  if(numb(i)) v++;
      ans = ans + (n - 1) / i;
    }
    cout << ans - v << "\\n";
  }

  return 0;
}


#define errOut(s)                                                              \\
  { std::cerr << __LINE__ << ":" << #s << ":" << (s) << std::endl; }

#include <bits/stdc++.h>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
// #include <boost/multi_array.hpp>
// #include <boost/optional.hpp>
// #include <boost/range/adaptors.hpp>
// #include <boost/range/algorithm.hpp>
// #include <boost/range/irange.hpp>
#pragma clang diagnostic pop

using namespace std;
template <size_t N, size_t MaxPrimeSize> struct primes_t {
  constexpr static size_t maxPrimeSize = MaxPrimeSize;
  constexpr primes_t() : primes(), count(), notSieves() {
    primes[count++] = 2;
    notSieves[0] = notSieves[1] = true;
    for (int i = 2; i < N; i++) {
      if (notSieves[i]) {
        continue;
      }
      primes[count++] = i;
      for (int64_t j = 2; i * j < N; j++) {
        notSieves[i * j] = true;
      }
    }
  }
  int64_t primes[MaxPrimeSize];
  int count;

private:
  bool notSieves[N];
};

static auto primes = primes_t<1000001, 1000000>{};

int64_t solve(int64_t const n) {
  int64_t ret = 0;
  for (int c = 1; c < n - 1; c++) {
    int64_t nn = n - c;
    int64_t cnt = 1;
    for (int i = 0;; i++) {
      int64_t const p = primes.primes[i];
      if (p > nn) {
        break;
      }
      int j = 0;
      while (nn % p == 0) {
        nn /= p;
        j++;
      }
      if (j > 0) {
        cnt *= (j + 1);
      }
    }
    ret += cnt;
  }
  ret++;
  return ret;
}

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

  int64_t n;
  std::cin >> n;
  auto const res = solve(n);
  std::cout << res << std::endl;
  return 0;
}

#define errOut(s)                                                              \\
  { std::cerr << __LINE__ << ":" << #s << ":" << (s) << std::endl; }

#include <bits/stdc++.h>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
// #include <boost/multi_array.hpp>
// #include <boost/optional.hpp>
// #include <boost/range/adaptors.hpp>
// #include <boost/range/algorithm.hpp>
// #include <boost/range/irange.hpp>
#pragma clang diagnostic pop

using namespace std;
template <size_t N, size_t MaxPrimeSize> struct primes_t {
  constexpr static size_t maxPrimeSize = MaxPrimeSize;
  constexpr primes_t() : primes(), count(), notSieves() {
    primes[count++] = 2;
    notSieves[0] = notSieves[1] = true;
    for (int i = 2; i < N; i++) {
      if (notSieves[i]) {
        continue;
      }
      primes[count++] = i;
      for (int64_t j = 2; i * j < N; j++) {
        notSieves[i * j] = true;
      }
    }
  }
  int64_t primes[MaxPrimeSize];
  int count;

private:
  bool notSieves[N];
};

static auto primes = primes_t<1000001, 1000000>{};

int64_t solve(int64_t const n) {
  int64_t ret = 0;
  for (int c = 1; c < n - 1; c++) {
    int64_t nn = n - c;
    int64_t cnt = 1;
    int64_t mx = int64_t(ceil(sqrt(nn * 1.0)));
    for (int i = 0; nn != 1; i++) {
      int64_t const p = primes.primes[i];
      if (nn % p != 0) {
        if (p > mx) {
          cnt *= 2;
          break;
        }
        continue;
      }
      int j = 0;
      while (nn % p == 0) {
        nn /= p;
        j++;
      }
      mx = int64_t(ceil(sqrt(nn * 1.0)));
      if (j > 0) {
        cnt *= (j + 1);
      }
    }
    ret += cnt;
  }
  ret++;
  return ret;
}

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

  int64_t n;
  std::cin >> n;
  auto const res = solve(n);
  std::cout << res << std::endl;
  return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define MOD 1000000007
#define inf 1e18
#define all(v) (v).begin(), (v).end()
using namespace std;

vector<int> dx = {-1, 1, 0, 0};
vector<int> dy = {0, 0, -1, 1};

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ll n;
  cin >> n;
  int ans = 0;
  for (ll c = 1; c <= n - 1; ++c) {
    ll x = n - c;
    for (ll i = 1; i * i <= x; ++i) {
      if (x % i == 0) {
        // cout << i << " " << x/i <<"\\n";
        if (i * i == x) {
          ans++;
        } else {
          ans += 2;
        }
      }
    }
  }
  cout << ans << "\\n";
  return 0;
}

#include <bits/stdc++.h>
#define ll long long
#define MOD 1000000007
#define inf 1e18
#define all(v) (v).begin(), (v).end()
using namespace std;

vector<int> dx = {-1, 1, 0, 0};
vector<int> dy = {0, 0, -1, 1};

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  int ans = 0;
  while (n > 0) {
    --n;
    int i = 1;
    while (i * i <= n) {
      if (n % i == 0) {
        ans += 2;
        if (n / i == i) {
          ans--;
        }
      }
      i++;
    }
  }
  cout << ans << "\\n";
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define endl '\\n'
#define rep(i, n) for (int i = 0; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)
#define repab(i, a, b) for (int i = a; i <= b; i++)
#define all(v) v.begin(), v.end()
#define F first
#define S second
#define printarr(v)                                                            \\
  for (auto x : v) {                                                           \\
    cout << x << " ";                                                          \\
  }
#define debug1(a) cout << #a << " " << (a) << endl;
#define debug2(a, b)                                                           \\
  cout << #a << " " << (a) << " " << #b << " " << (b) << endl;
#define debug3(a, b, c)                                                        \\
  cout << #a << " " << (a) << " " << #b << " " << (b) << " " #c << " " << (c)  \\
       << endl;
typedef long double ld;
void solve() {
  ll n;
  cin >> n;
  ll ans = 0;
  for (ll i = 1; i < n; i++) {
    if (n - (i) > 0) {
      ll val = n - i;
      for (ll j = 1; j * j <= val; j++) {
        if (val % j == 0) {
          ll a = j;
          ll b = val / j;
          if (a == b) {
            ans += 1;
          } else {
            ans += 2;
          }
        }
      }
    }
  }
  cout << ans << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  solve();
}

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define endl '\\n'
#define rep(i, n) for (int i = 0; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)
#define repab(i, a, b) for (int i = a; i <= b; i++)
#define all(v) v.begin(), v.end()
#define F first
#define S second
#define printarr(v)                                                            \\
  for (auto x : v) {                                                           \\
    cout << x << " ";                                                          \\
  }
#define debug1(a) cout << #a << " " << (a) << endl;
#define debug2(a, b)                                                           \\
  cout << #a << " " << (a) << " " << #b << " " << (b) << endl;
#define debug3(a, b, c)                                                        \\
  cout << #a << " " << (a) << " " << #b << " " << (b) << " " #c << " " << (c)  \\
       << endl;
typedef long double ld;

void solve() {
  ll n;
  cin >> n;
  ll ans = 0;
  vector<ll> div(n + 1, 0);

  // For every number from 1 to n
  for (ll i = 1; i <= n; i++) {

    // Increase divisors count for
    // every number divisible by i
    for (ll j = 1; j * i < n; j++)
      if (j * i >= 0) {
        div[i * j]++;
      }
  }

  for (ll i = 1; i <= n; i++)
    ans += div[i];
  cout << ans << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  solve();
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fast_cin                                                               \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)

int phi(int n) {
  int result = n;
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      while (n % i == 0)
        n /= i;
      result -= result / i;
    }
  }
  if (n > 1)
    result -= result / n;
  return result;
}
long long countDivisors(long long n) {
  long long cnt = 0;
  for (long long i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      // If divisors are equal,
      // count only one
      if (n / i == i)
        cnt++;

      else // Otherwise count both
        cnt = cnt + 2;
    }
  }
  return cnt;
}

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

  long long N;
  cin >> N;

  long long ans = 0;

  for (long long i = N - 1; i >= 1; i--) {
    ans += countDivisors(i);
  }
  // ans=phi(N);
  cout << ans << "\\n";
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fast_cin                                                               \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)

vector<int> divisor;
void findDivisors(int n) {

  // Array to store the count
  // of divisors
  divisor.resize(n + 1, 0);
  //   memset(div, 0, sizeof div);

  // For every number from 1 to n
  for (int i = 1; i <= n; i++) {

    // Increase divisors count for
    // every number divisible by i
    for (int j = 1; j * i <= n; j++)
      divisor[i * j]++;
  }
}

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

  long long N;
  cin >> N;

  long long ans = 0;

  findDivisors(N);
  // ans=phi(N);
  // cout<<ans<<"\\n";
  for (int i = 1; i <= N - 1; i++) {
    ans += divisor[i];
  }
  cout << ans << "\\n";
}


#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;

ll divisor(ll n) {
  ll x = 0;
  for (ll i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      x++;
      if (i * i != n)
        x++;
    }
  }
  return x;
}

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

  for (ll i = 1; i < n; i++) {
    m += divisor(n - i);
  }

  cout << m << endl;
}

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;

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

  for (ll i = 1; i < n; i++) {
    m += (n - 1) / i;
  }

  cout << m << endl;
}


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

int nextsosu(int b) {
  static vector<int> memo;
  if (b + 1 > memo.size()) {
    memo.resize(b + 1);
  } else if (memo[b] != 0) {
    return memo[b];
  }
  int r = b + 1;
  while (true) {
    int success = true;
    for (int i = 2; i < r; ++i) {
      if (r % i == 0) {
        success = false;
        break;
      }
    }
    if (success) {
      break;
    }
    ++r;
  }
  memo[b] = r;
  return r;
}

int func(int t) {
  int beBase = 1;

  int total = 1;
  for (int base; t != 1;) {
    base = nextsosu(beBase);
    beBase = base;
    int i = 1;
    while (t % base == 0) {
      t /= base;
      ++i;
    }
    total *= i;
  }
  return total;
}

int main() {
  int n;
  cin >> n;
  int total = 1;
  for (int i = 2; i < n; ++i) {
    total += func(i);
  }
  cout << total << endl;
}

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

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


// g++ -Wshadow -Wall -O2 -Wno-unused-result -Wno-psabi
#include "bits/stdc++.h"
#define f first
#define s second
#define inf 1e18
#define ll long long
#define mod 1000000007
#define pb emplace_back
#define vll vector<long long int>
#define ull unsigned long long
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define sz(x) ((long long int)(x).size())
#define mll map<long long int, long long int>
#define pll pair<long long int, long long int>
using namespace std;

ll n;

void input() { cin >> n; }

void solve() {
  ll ans = 0;
  for (ll i = 1; i <= n; i++) {
    ll x = n - i;
    for (ll j = 1; j * j <= x; j++) {
      if (x % j == 0) {
        ans += 2;
        if (j == x / j)
          ans--;
      }
    }
  }
  cout << ans;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.precision(20);
  ll t = 1;
  // cin >> t;
  while (t--) {
    input();
    solve();
    cout << endl;
  }
  cin.get();
  return 0;
}

// g++ -Wshadow -Wall -O2 -Wno-unused-result -Wno-psabi
#include "bits/stdc++.h"
#define f first
#define s second
#define inf 1e18
#define ll long long
#define mod 1000000007
#define pb emplace_back
#define vll vector<long long int>
#define ull unsigned long long
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define sz(x) ((long long int)(x).size())
#define mll map<long long int, long long int>
#define pll pair<long long int, long long int>
using namespace std;

ll n;
const ll nax = 10e6 + 5;
ll cnt[nax] = {0};

void input() { cin >> n; }

void solve() {
  ll ans = 0;
  for (ll i = 1; i <= n; i++)
    for (ll j = i; j <= n; j += i)
      cnt[j]++;
  for (ll i = 1; i < n; i++)
    ans += cnt[i];
  cout << ans;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.precision(20);
  ll t = 1;
  // cin >> t;
  while (t--) {
    input();
    solve();
    cout << endl;
  }
  cin.get();
  return 0;
}


// Radhe Radhe
#include <bits/stdc++.h>
#define godspeed                                                               \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define mod 1000000007
#define ll long long
#define ld long double
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define en '\\n'
#define rep(i, n) for (ll i = 0; i < n; i++)
#define rep1(i, a, b) for (ll i = a; i <= b; i++)
#define repVect(i, n) for (ll i = 0; i < sum.size(); i++)
#define fixed cout.setf(ios::fixed);
#define Precise cout.precision(7);
#define yes cout << "Yes" << '\\n'
#define no cout << "No" << '\\n'
using namespace std;

int main() {
  godspeed ll n, i, j, k;
  string s;
  ll ans = 0;
  cin >> n;
  ll noo = 0;
  for (i = 1; i < n; i++) {
    for (j = 1; j < n; j++) {
      if (i * j < n) {

        ans++;
        //  cout<<++noo<<": "<<i<<" "<<j<<" "<<i*j<<en;
      }
    }
  }
  cout << ans << en;
  return 0;
}

// Radhe Radhe
#include <bits/stdc++.h>
#define godspeed                                                               \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define mod 1000000007
#define ll long long
#define ld long double
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define en '\\n'
#define rep(i, n) for (ll i = 0; i < n; i++)
#define rep1(i, a, b) for (ll i = a; i <= b; i++)
#define repVect(i, n) for (ll i = 0; i < sum.size(); i++)
#define fixed cout.setf(ios::fixed);
#define Precise cout.precision(7);
#define yes cout << "Yes" << '\\n'
#define no cout << "No" << '\\n'
using namespace std;

int main() {
  godspeed ll n, i, j, k;
  string s;
  ll ans = 0;
  cin >> n;
  for (i = 1; i < n; i++) {
    ll lol = n / i;
    if (n % i)
      ans += lol;
    else
      ans += lol - 1;
    /*for(j=1; j<n; j++)
    {
        if(i*j<n){

            ans++;
        cout<<++noo<<": "<<i<<" "<<j<<" "<<i*j<<en;
        }
    }*/
  }
  cout << ans << en;
  return 0;
}


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

#define ll long long
#define d long double

#define scf(n) scanf("%d", &n)
#define lscf(n) scanf("%lld", &n)
#define dscf(n) scanf("%Lf", &n)
#define pri(n) printf("%d ", (int)n)
#define lpri(n) printf("%lld ", n)
#define dpri(n) printf("%Lf ", n)
#define prin(n) printf("%d\\n", (int)n)
#define lprin(n) printf("%lld\\n", n)
#define dprin(n) printf("%Lf\\n", n)

#define fast()                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
#define rep(i, ini, n) for (ll i = ini; i < (int)n; i++)
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define bitcount(n) __builtin_popcount(n)
#define tc                                                                     \\
  int tt;                                                                      \\
  scf(tt);                                                                     \\
  while (tt--)
#define gcd __gcd
#define inf INT_MAX
#define ninf INT_MIN

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define PI 3.14159265358979323846264

const ll M = 1e9 + 7;
const int N = 1e6 + 7;

ll count_factors(ll n) {
  ll count = 0;

  for (int i = 1; i * i < n; i++) {
    if (n % i == 0)
      count += 2;
  }

  ll x = sqrt(n);
  if (x * x == n)
    count++;

  return count;
}

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

  ll ans = 0;

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

    ans += count_factors(x);
  }

  cout << ans;
  return 0;
}

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

#define ll long long
#define d long double

#define scf(n) scanf("%d", &n)
#define lscf(n) scanf("%lld", &n)
#define dscf(n) scanf("%Lf", &n)
#define pri(n) printf("%d ", (int)n)
#define lpri(n) printf("%lld ", n)
#define dpri(n) printf("%Lf ", n)
#define prin(n) printf("%d\\n", (int)n)
#define lprin(n) printf("%lld\\n", n)
#define dprin(n) printf("%Lf\\n", n)

#define fast()                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
#define rep(i, ini, n) for (ll i = ini; i < (int)n; i++)
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define bitcount(n) __builtin_popcount(n)
#define tc                                                                     \\
  int tt;                                                                      \\
  scf(tt);                                                                     \\
  while (tt--)
#define gcd __gcd
#define inf INT_MAX
#define ninf INT_MIN

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define PI 3.14159265358979323846264

const ll M = 1e9 + 7;
const int N = 1e6 + 7;

int count_factors(int n) {
  int count = 0;

  for (int i = 1; i * i < n; i++) {
    if (n % i == 0)
      count += 2;
  }

  int x = sqrt(n);
  if (x * x == n)
    count++;

  return count;
}

int main() {
  int n;
  scf(n);

  int ans = 0;

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

    ans += count_factors(x);
  }

  prin(ans);
  return 0;
}


#pragma GCC optimize(2)
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <functional>
#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;

int cc[1000005];

void build(void) {
  for (int i = 1; i <= 1000000; i++) {
    int cur = i;

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

int main() {
  // clock_t start = clock();
  build();
  // cout << fixed << setprecision(12) << (long double)(clock() - start) /
  // CLOCKS_PER_SEC << endl;
  int n;
  cin >> n;

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

  cout << ans;
  return 0;
}

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <functional>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;

int main() {

  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; i++)
    ans += (n - 1) / i;

  cout << ans;

  return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define mp make_pair
#define pb push_back
#define f first
// #define s second
#define mod 1000000007
const ll N = 2e5 + 5;
unordered_map<ll, vector<ll>> adj;
vector<ll> vis(300005, 0);
vector<ll> p(100005, 0);
ll c[100005];
ll cnt;
ll n;
void dfs(ll node) {
  if (vis[node])
    return;
  vis[node] = 1;
  cnt++;
  for (auto i : adj[node]) {
    dfs(i);
  }
}
struct range {
  ll l;
  ll r;
  ll index;
};
bool cmp(range &p1, range &p2) { return p1.l < p2.l; }

int main() {
  ll n;
  cin >> n;
  ll i, j;
  ll temp;
  ll cnt = 0;
  for (j = 1; j < n; j++) {
    temp = n - j;
    for (i = 1; i * i <= temp; i++) {

      if (temp % i == 0) {
        if (i == temp / i)
          cnt++;
        else
          cnt += 2LL;
      }
    }
  }
  cout << cnt;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define pb push_back
#define f first
// #define s second
#define mod 1000000007
const ll N = 2e5 + 5;
unordered_map<ll, vector<ll>> adj;
vector<ll> vis(300005, 0);
vector<ll> p(100005, 0);
ll c[100005];
ll cnt;
ll n;
void dfs(ll node) {
  if (vis[node])
    return;
  vis[node] = 1;
  cnt++;
  for (auto i : adj[node]) {
    dfs(i);
  }
}
struct range {
  ll l;
  ll r;
  ll index;
};
bool cmp(range &p1, range &p2) { return p1.l < p2.l; }

int main() {
  ll n;
  cin >> n;
  ll i, j;
  ll temp;
  ll cnt = 0;
  for (i = 1; i <= sqrt(n - 1); i++) {
    for (j = i; j * i < n; j++)
      cnt++;
  }
  cnt *= 2;
  cnt -= int(sqrt(n - 1));
  cout << cnt;
}


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

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

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

  cout << ans << endl;
}

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

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

  ll ans = 0;
  int k = n - 1;
  for (int i = 1; i < n; i++) {
    ans += k / i;
  }

  cout << ans << endl;
}


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

void solve() {

  // A * B + C = N
  int n;
  cin >> n;
  // int a,b,c;
  int count = 0;
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      if (n - (i * j) > 0) {
        count++;
      }
    }
  }
  cout << count;
}

int main() { solve(); }

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

void solve() {

  // A * B + C = N
  int n;
  cin >> n;
  // int a,b,c;
  int count = 0;

  for (int i = 1; i < n; i++) {
    count += (n - 1) / i;
  }

  cout << count;
}

int main() { solve(); }


/*
    हॉंजी । की हाल चाल?
    बड़ीया सब?
*/

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

#define ff first
#define ss second
#define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii unordered_map<int, int>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define MOD 1000000007
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define w(x)                                                                   \\
  int x;                                                                       \\
  cin >> x;                                                                    \\
  while (x--)
#define EPS 1e-9

void gogeta() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
}

int32_t main() {
  gogeta();
  int n;
  cin >> n;
  vector<int> fac(n, 0);

  for (int i = 1; i <= n; i++) {
    int count = 0;
    int j;
    for (j = 1; j * j <= i; j++) {
      if (i % j == 0)
        count++;
    }
    j--;
    if (j * j != i)
      count = 2 * count;
    else
      count = 2 * count - 1;
    fac[i] = count;
  }

  int ans = 0;
  for (int i = 1; i < n; i++) {
    ans += fac[i];
    // cout << fac[i] << endl;
  }
  cout << ans << endl;
}

/*
    हॉंजी । की हाल चाल?
    बड़ीया सब?
*/

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

#define ff first
#define ss second
#define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii unordered_map<int, int>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define MOD 1000000007
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define w(x)                                                                   \\
  int x;                                                                       \\
  cin >> x;                                                                    \\
  while (x--)
#define EPS 1e-9

void gogeta() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
}

int MAXN = 1000001;

vector<int> spf(MAXN);

void sieve() {
  spf[1] = 1;
  for (int i = 2; i < MAXN; i++)

    // marking smallest prime factor for every
    // number to be itself.
    spf[i] = i;

  // separately marking spf for every even
  // number as 2
  for (int i = 4; i < MAXN; i += 2)
    spf[i] = 2;

  for (int i = 3; i * i < MAXN; i++) {
    // checking if i is prime
    if (spf[i] == i) {
      // marking SPF for all numbers divisible by i
      for (int j = i * i; j < MAXN; j += i)

        // marking spf[j] if it is not
        // previously marked
        if (spf[j] == j)
          spf[j] = i;
    }
  }
}

int getFactorization(int x) {
  mii ret;
  while (x != 1) {
    ret[(spf[x])]++;
    x = x / spf[x];
  }
  int ans = 1;
  for (auto x : ret) {
    ans *= (x.ss + 1);
  }
  return ans;
}

int32_t main() {
  gogeta();
  int n;
  cin >> n;
  sieve();
  int ans = 0;
  for (int i = 1; i < n; i++) {
    ans += getFactorization(i);
    // cout << fac[i] << endl;
  }
  cout << ans << endl;
}

terminate called after throwing an instance of 'std::length_error'
  what():  cannot create std::vector larger than max_size()


#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template <typename T>
using ord_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define C continue;
#define R return

#define ull unsigned long long int
#define ll long long int
#define ld long double
#define D double

#define V vector
#define vi vector<int>
#define vc vector<char>
#define vs vector<string>
#define vb vector<bool>
#define vd vector<D>
#define vll vector<ll>
#define vull vector<ull>
#define vld vector<ld>

#define vvi vector<vector<int>>
#define vvb vector<vector<bool>>
#define vvc vector<vector<char>>
#define vvll vector<vector<ll>>
#define vvd vector<vector<D>>
#define vvld vector<vector<ld>>

#define P pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pull pair<ull, ull>
#define pld pair<ld, ld>
#define F first
#define S second

#define vpld vector<pld>
#define vpii vector<pii>
#define vpll vector<pll>

#define vvpii vector<vector<pii>>
#define vvpll vector<vector<pll>>

#define PQ(type) priority_queue<type>
#define PQD(type) priority_queue<type, vector<type>, greater<type>>

#define mii map<int, int>
#define mll map<ll, ll>
#define mci map<char, int>
#define msi map<string, int>
#define mis map<int, string>

#define umii unordered_map<int, int>
#define umll unordered_map<ll, ll>
#define umci unordered_map<char, int>
#define umsi unordered_map<string, int>
#define umis unordered_map<int, string>

// IO
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie();                                                                   \\
  cout.tie();
#define read freopen("input.txt", "r", stdin);
#define write freopen("output.txt", "w", stdout);
#define in1(x, n) f(i, n) cin >> x[i];
#define in2(x, n, m) f(i, n) f(j, m) cin >> x[i][j];
#define inp(x, n) f(i, n) cin >> x[i].F >> x[i].S;
#define out1(x, n)                                                             \\
  f(i, n) cout << x[i] << " ";                                                 \\
  cout << "\\n";
#define out2(x, n, m)                                                          \\
  f(i, n) {                                                                    \\
    f(j, m) cout << x[i][j] << " ";                                            \\
    cout << "\\n";                                                              \\
  }
#define outp(x, n) f(i, n) cout << x[i].F << " " << x[i].S << "\\n";
#define pp(n) printf("%.10Lf", n);
#define prdbl(val, precise)                                                    \\
  cout << fixed << setprecision(precise) << val << "\\n";
#define dbg1(x) cout << " > " << #x << " = " << x << "\\n";
#define dbg2(x, y)                                                             \\
  cout << " < " << #x << " = " << x << ", " << #y << " = " << y << endl;
#define line cout << "\\n";

#define init(x, val) memset(x, val, sizeof(x)) // can be 0 or -1
#define mem(x, val) memset(x, val, sizeof(x))  // can be 0 or -1 only

// loops
#define test                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define loop(i, a, b) for (ll i = a; i <= b; i++)
#define loopr(i, a, b) for (ll i = a; i >= b; i--)
#define loops(i, a, b, step) for (ll i = a; i < b; i += step)
#define looprs(i, a, b, step) for (ll i = a; i >= b; i -= step)
#define f(i, n) for (ll i = 0; i < n; i++)
#define ff(i, n) for (ll i = 1; i <= n; i++)
#define fr(i, n) for (ll i = n - 1; i >= 0; i--)
#define fir(x, y) f(ll i = min(x, y); i <= max(x, y); i++)
#define firr(x, y) f(ll i = max(x, y); i <= min(x, y); i++)
#define inrange(i, a, b) ((i >= min(a, b)) && (i <= max(a, b)))

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define bgn(x) ((x).begin())
#define sz(x) ((x).size())
#define mxe(a) *(max_element(all(a))
#define mne(a) *(min_element(all(a))
#define lb lower_bound
#define ub upper_bound
#define rev reverse

#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define eb emplace_back
#define I insert

#define count_1(n) __builtin_popcountll(n)
#define sqr(x) ((x) * (x))
#define dist(a, b, p, q) sqrt((p - a) * (p - a) + (q - b) * (q - b))

#define mod1 1000000007
#define mod2 998244353

// functions

void yes() {
  cout << "YES";
  // cout << "\\n";
}

void no() {
  cout << "NO";
  // cout << "\\n";
}

ll pmod(ll a, ll mod = mod1) { return ((a) % mod + mod) % mod; }

ll cel(ll x1, ll y1) // not for negative x1
{
  if ((x1) <= 0) {
    return (x1) / (y1);
  }
  return (((x1) / (y1)) + (((x1) % (y1)) != 0));
}

bool isprime(ll n) {
  for (ll i = 2; i * i <= n; i++)
    if (n % i == 0)
      return false;
  return true;
}

ll gcd(ll a, ll b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}

ll lcm(ll a, ll b) { return ((a / gcd(a, b)) * b); }

long long bp(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1)
      res = res * a;
    a = a * a;
    b >>= 1;
  }
  return res;
}

long long bpm(long long a, long long b, long long m = mod1) {
  if (a >= m)
    a %= m;
  long long res = 1;
  while (b > 0) {
    if (b & 1)
      res *= a;
    if (res >= m)
      res %= m;
    a *= a;
    if (a >= m)
      a %= m;
    b >>= 1;
  }
  if (res >= m)
    res %= m;
  return res;
}

// constants

string vow = "aeiou";

const int dr4[] = {-1, 0, 1, 0};
const int dc4[] = {0, 1, 0, -1};

const int drk[] = {-1, 0, 1, 0, -1, -1, 1, 1};
const int dck[] = {0, 1, 0, -1, -1, 1, -1, 1};

const int drh[] = {-2, -2, -1, -1, 1, 1, 2, 2};
const int dch[] = {1, -1, 2, -2, 2, -2, 1, -1};

const ll maxn = 1e6 + 5;
const ll inf = 1e9;
const ld PI = acos(-1);
const int imin = INT_MIN;
const int imax = INT_MAX;
const ll lmax = LLONG_MAX;
const ll lmin = LLONG_MIN;
const ld dmin = DBL_MIN;
const ld dmax = DBL_MAX;

ll p[maxn];
void solve(int tc) {
  int n;
  cin >> n;
  for (int i = 0; i < n + 10; i++) {
    p[i] = 2;
  }
  p[1] = 1;
  for (int i = 2; i < n + 10; i++) {
    for (int j = i * 2; j < n + 10; j += i) {
      p[j]++;
    }
  }
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    ans += p[i];
  }
  cout << ans;
}

int main() {

  // read

  // write
  fast;
  int t = 1;
  // cin >> t;
  loop(i, 1, t) {

    solve(i);
    cout << "\\n";
  }

  return 0;
}

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template <typename T>
using ord_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define C continue;
#define R return

#define ull unsigned long long int
#define ll long long int
#define ld long double
#define D double

#define V vector
#define vi vector<int>
#define vc vector<char>
#define vs vector<string>
#define vb vector<bool>
#define vd vector<D>
#define vll vector<ll>
#define vull vector<ull>
#define vld vector<ld>

#define vvi vector<vector<int>>
#define vvb vector<vector<bool>>
#define vvc vector<vector<char>>
#define vvll vector<vector<ll>>
#define vvd vector<vector<D>>
#define vvld vector<vector<ld>>

#define P pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pull pair<ull, ull>
#define pld pair<ld, ld>
#define F first
#define S second

#define vpld vector<pld>
#define vpii vector<pii>
#define vpll vector<pll>

#define vvpii vector<vector<pii>>
#define vvpll vector<vector<pll>>

#define PQ(type) priority_queue<type>
#define PQD(type) priority_queue<type, vector<type>, greater<type>>

#define mii map<int, int>
#define mll map<ll, ll>
#define mci map<char, int>
#define msi map<string, int>
#define mis map<int, string>

#define umii unordered_map<int, int>
#define umll unordered_map<ll, ll>
#define umci unordered_map<char, int>
#define umsi unordered_map<string, int>
#define umis unordered_map<int, string>

// IO
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie();                                                                   \\
  cout.tie();
#define read freopen("input.txt", "r", stdin);
#define write freopen("output.txt", "w", stdout);
#define in1(x, n) f(i, n) cin >> x[i];
#define in2(x, n, m) f(i, n) f(j, m) cin >> x[i][j];
#define inp(x, n) f(i, n) cin >> x[i].F >> x[i].S;
#define out1(x, n)                                                             \\
  f(i, n) cout << x[i] << " ";                                                 \\
  cout << "\\n";
#define out2(x, n, m)                                                          \\
  f(i, n) {                                                                    \\
    f(j, m) cout << x[i][j] << " ";                                            \\
    cout << "\\n";                                                              \\
  }
#define outp(x, n) f(i, n) cout << x[i].F << " " << x[i].S << "\\n";
#define pp(n) printf("%.10Lf", n);
#define prdbl(val, precise)                                                    \\
  cout << fixed << setprecision(precise) << val << "\\n";
#define dbg1(x) cout << " > " << #x << " = " << x << "\\n";
#define dbg2(x, y)                                                             \\
  cout << " < " << #x << " = " << x << ", " << #y << " = " << y << endl;
#define line cout << "\\n";

#define init(x, val) memset(x, val, sizeof(x)) // can be 0 or -1
#define mem(x, val) memset(x, val, sizeof(x))  // can be 0 or -1 only

// loops
#define test                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define loop(i, a, b) for (ll i = a; i <= b; i++)
#define loopr(i, a, b) for (ll i = a; i >= b; i--)
#define loops(i, a, b, step) for (ll i = a; i < b; i += step)
#define looprs(i, a, b, step) for (ll i = a; i >= b; i -= step)
#define f(i, n) for (ll i = 0; i < n; i++)
#define ff(i, n) for (ll i = 1; i <= n; i++)
#define fr(i, n) for (ll i = n - 1; i >= 0; i--)
#define fir(x, y) f(ll i = min(x, y); i <= max(x, y); i++)
#define firr(x, y) f(ll i = max(x, y); i <= min(x, y); i++)
#define inrange(i, a, b) ((i >= min(a, b)) && (i <= max(a, b)))

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define bgn(x) ((x).begin())
#define sz(x) ((x).size())
#define mxe(a) *(max_element(all(a))
#define mne(a) *(min_element(all(a))
#define lb lower_bound
#define ub upper_bound
#define rev reverse

#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define eb emplace_back
#define I insert

#define count_1(n) __builtin_popcountll(n)
#define sqr(x) ((x) * (x))
#define dist(a, b, p, q) sqrt((p - a) * (p - a) + (q - b) * (q - b))

#define mod1 1000000007
#define mod2 998244353

// functions

void yes() {
  cout << "YES";
  // cout << "\\n";
}

void no() {
  cout << "NO";
  // cout << "\\n";
}

ll pmod(ll a, ll mod = mod1) { return ((a) % mod + mod) % mod; }

ll cel(ll x1, ll y1) // not for negative x1
{
  if ((x1) <= 0) {
    return (x1) / (y1);
  }
  return (((x1) / (y1)) + (((x1) % (y1)) != 0));
}

bool isprime(ll n) {
  for (ll i = 2; i * i <= n; i++)
    if (n % i == 0)
      return false;
  return true;
}

ll gcd(ll a, ll b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}

ll lcm(ll a, ll b) { return ((a / gcd(a, b)) * b); }

long long bp(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1)
      res = res * a;
    a = a * a;
    b >>= 1;
  }
  return res;
}

long long bpm(long long a, long long b, long long m = mod1) {
  if (a >= m)
    a %= m;
  long long res = 1;
  while (b > 0) {
    if (b & 1)
      res *= a;
    if (res >= m)
      res %= m;
    a *= a;
    if (a >= m)
      a %= m;
    b >>= 1;
  }
  if (res >= m)
    res %= m;
  return res;
}

// constants

string vow = "aeiou";

const int dr4[] = {-1, 0, 1, 0};
const int dc4[] = {0, 1, 0, -1};

const int drk[] = {-1, 0, 1, 0, -1, -1, 1, 1};
const int dck[] = {0, 1, 0, -1, -1, 1, -1, 1};

const int drh[] = {-2, -2, -1, -1, 1, 1, 2, 2};
const int dch[] = {1, -1, 2, -2, 2, -2, 1, -1};

const ll maxn = 1e6 + 5;
const ll inf = 1e9;
const ld PI = acos(-1);
const int imin = INT_MIN;
const int imax = INT_MAX;
const ll lmax = LLONG_MAX;
const ll lmin = LLONG_MIN;
const ld dmin = DBL_MIN;
const ld dmax = DBL_MAX;

ll p[maxn];
void solve(int tc) {
  int n;
  cin >> n;
  for (int i = 0; i < maxn; i++) {
    p[i] = 2;
  }
  p[1] = 1;
  for (int i = 2; i < maxn; i++) {
    for (int j = i * 2; j < maxn; j += i) {
      p[j]++;
    }
  }
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    ans += p[i];
  }
  cout << ans;
}

int main() {

  // read

  // write
  fast;
  int t = 1;
  // cin >> t;
  loop(i, 1, t) {

    solve(i);
    cout << "\\n";
  }

  return 0;
}


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

int main() {
  int N, a, b;
  int count = 0;

  cin >> N;

  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      b = (N - (j + 1));
      if (b == 0) {
        continue;
      }
      a = b % (i + 1);
      if (a == 0) {
        count += 1;
      }
    }
  }
  cout << count << endl;
}

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

int main() {
  int N, a, f;
  int count = 0;

  cin >> N;

  for (int i = 0; i < N; i++) {
    f = 0;
    for (int j = 0; j < N; j++) {
      if (f == 1) {
        break;
      }
      a = (i + 1) * (j + 1);
      if (a < N) {
        count += 1;
      } else {
        f = 1;
      }
    }
  }
  cout << count << endl;
}


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

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

  int count = 0;
  for (int a = 1; a < n; a++) {
    for (int b = 1; b < n; b++) {
      if ((n - a * b) >= 1) {
        count++;
      }
    }
  }
  cout << count;
}

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

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

  int count = 0;
  for (int a = 1; a < n; a++) {
    count += (n - 1) / a;
  }

  cout << count;
}


#include <bits/stdc++.h>
#define rep(i, a, n) for (int i = a; i < n; i++)
#define per(i, a, n) for (int i = n - 1; i >= a; i--)
#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++)
#define pb push_back
#define mp make_pair
#define MOD 1000000007
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int uint64;
using namespace std;
int main() {
  uint64 ans = 0;
  int n;
  cin >> n;
  rep(i, 1, n) {
    rep(j, 1, i * j < n) { ans++; }
  }
  cout << ans << endl;
}

#include <bits/stdc++.h>
#define rep(i, a, n) for (int i = a; i < n; i++)
#define per(i, a, n) for (int i = n - 1; i >= a; i--)
#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++)
#define pb push_back
#define mp make_pair
#define MOD 1000000007
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int uint64;
using namespace std;
int main() {
  uint64 ans = 0;
  int n;
  cin >> n;
  rep(i, 1, n) {
    for (int j = 1; j * i < n; j++) {
      ans++;
    }
  }
  cout << ans << endl;
}


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

#define ll long long
#define FOR(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define REP(i, x) for (int i = 0; i < (int)(x); i++)
#define REPS(i, x) for (int i = 1; i <= (int)(x); i++)
#define RREP(i, x) for (int i = ((int)(x)-1); i >= 0; i--)
#define RREPS(i, x) for (int i = ((int)(x)); i > 0; i--)
#define INF 2147483647
#define LLINF 9223372036854775807LL
#define vi vector<int>
#define vvi vector<vector<int>>
#define vvvi vector<vector<vector<int>>>
#define pi pair<int, int>
#define ALL(a) (a).begin(), (a).end()
#define BIT(n) (1LL << (n))

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

int main() {
  int N;
  cin >> N;
  int cou = 0;
  int nn = N;
  for (int i = 1; i <= N - 1; i++) {
    nn = N - i;
    for (ll i = 1; i * i <= nn; i++) {
      if (nn % i == 0 && nn != i * i) {
        cou = cou + 2;
      }
      if (nn % i == 0 && nn == i * i) {
        cou = cou + 1;
      }
    }
  }

  cout << cou << endl;
}

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

#define ll long long
#define FOR(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define REP(i, x) for (int i = 0; i < (int)(x); i++)
#define REPS(i, x) for (int i = 1; i <= (int)(x); i++)
#define RREP(i, x) for (int i = ((int)(x)-1); i >= 0; i--)
#define RREPS(i, x) for (int i = ((int)(x)); i > 0; i--)
#define INF 2147483647
#define LLINF 9223372036854775807LL
#define vi vector<int>
#define vvi vector<vector<int>>
#define vvvi vector<vector<vector<int>>>
#define pi pair<int, int>
#define ALL(a) (a).begin(), (a).end()
#define BIT(n) (1LL << (n))

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

int main() {
  int N;
  cin >> N;
  int cou = 0;
  int nn = N - 1;
  for (int i = 1; i <= N; i++) {
    cou = cou + nn / i;
  }

  cout << cou << endl;
}


#include <algorithm>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
using namespace std;

typedef long long llong;
typedef unsigned long long ullong;
// -2.1e-9 <= int <= 2.1e9
// -9.2e-18 <= long long <= 9.2e18
// 0 <= unsigned int <= 4.2e9
// 0 <= unsigned long long <= 18.4e18
// cout << fixed << setprecision(10);

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

  int cnt = 0;
  for (int c = 1; c <= N - 1; ++c) {
    int target = N - c;
    double dThr = sqrt(target);
    for (int a = 1; a <= dThr; ++a) {
      // int ia = int(round(da));
      if (target % a == 0) {
        int b = target / a;
        if (a == b)
          ++cnt;
        else
          cnt += 2;
      }
    }
  }

  cout << cnt << endl;
}

#include <algorithm>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
using namespace std;

typedef long long llong;
typedef unsigned long long ullong;
// -2.1e-9 <= int <= 2.1e9
// -9.2e-18 <= long long <= 9.2e18
// 0 <= unsigned int <= 4.2e9
// 0 <= unsigned long long <= 18.4e18
// cout << fixed << setprecision(10);

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

  int cnt = 0;
  for (int c = 1; c <= N - 1; ++c) {
    int target = N - c;
    double dThr = sqrt(target);
    for (int a = 1; a <= dThr; ++a) {
      // int ia = int(round(da));
      int b = target / a;
      if (a * b == target) {
        if (a == b)
          ++cnt;
        else
          cnt += 2;
      }
    }
  }

  cout << cnt << endl;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
#define w(x)                                                                   \\
  int x;                                                                       \\
  cin >> x;                                                                    \\
  while (x--)

long long int give(long long int n) {
  long long int ans = 0;
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      ans++;
      if (n / i != i)
        ans++;
    }
  }
  return ans;
}

int main() {

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int n, ans = 0;
  cin >> n;
  for (int i = 1; i <= n - 1; i++) {
    // cout<<i<<" ";
    ans += give(n - i);
  }
  cout << ans;
}

#include <bits/stdc++.h>
#define ll long long
using namespace std;
#define w(x)                                                                   \\
  int x;                                                                       \\
  cin >> x;                                                                    \\
  while (x--)

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

#define MAXN 1000001

int spf[MAXN];

void sieve() {
  spf[1] = 1;
  for (int i = 2; i < MAXN; i++)

    spf[i] = i;

  for (int i = 4; i < MAXN; i += 2)
    spf[i] = 2;

  for (int i = 3; i * i < MAXN; i++) {
    if (spf[i] == i) {
      for (int j = i * i; j < MAXN; j += i)

        if (spf[j] == j)
          spf[j] = i;
    }
  }
}

long long int getFactorization(int x) {
  map<int, int> map;
  vector<int> ret;
  while (x != 1) {
    ret.push_back(spf[x]);
    map[spf[x]]++;
    x = x / spf[x];
  }
  long long int ans = 1;
  for (auto i : map) {
    int x = i.first;
    int y = i.second;
    // cout<<x<<" "<<y<<" "
    ans *= (y + 1);
  }
  return ans;
}

int main() {

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  sieve();
  long long int n, ans = 0;
  cin >> n;
  for (int i = 1; i <= n - 1; i++) {
    if (i == n - 1)
      ans++;
    else {
      int x = getFactorization(n - i);
      // if(x%2==1)
      // {
      //     ans--;
      // }
      ans += x;
    }
  }
  cout << ans;
}


#include <iostream>

// nの約数の個数を返す
long long d_num(long long n) {
  long long cnt = 0;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0)
      cnt += 2;
    if (i * i == n)
      --cnt;
  }
  return cnt;
}

int main() {
  int n;
  std::cin >> n;
  long long sum = 0;
  for (int c = 1; c <= n - 1; ++c) {
    sum += d_num(n - c);
  }
  std::cout << sum << std::endl;

  return 0;
}

#include <iostream>

// nの約数の個数を返す
long long d_num(long long n) {
  long long cnt = 0;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0)
      cnt += 2;
    if (i * i == n)
      --cnt;
  }
  return cnt;
}

// n以下の正の整数の約数の和を返す
long long d_num2(long long N) {
  long long cnt = 0;
  for (int n = 1; n <= N; ++n) {
    for (int i = 1; i * i <= n; ++i) {
      if (n % i == 0)
        cnt += 2;
      if (i * i == n)
        --cnt;
    }
  }
  return cnt;
}

int main() {
  int n;
  std::cin >> n;
  // long long sum = 0;
  // for (int c = 1; c <= n-1; ++c) {
  //   sum += d_num(n-c);
  // }
  std::cout << d_num2(n - 1) << std::endl;
  // std::cout << sum << std::endl;

  return 0;
}


#include <iostream>
using namespace std;

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

  int count = 0;
  for (int c = 1; c < N; c++) {
    int T = N - c;
    for (int b = 1; b <= T; b++) {
      if (T % b == 0) {
        count++;
      }
    }
  }

  cout << count << endl;

  return 0;
}

#include <iostream>
using namespace std;

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

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

  cout << count << endl;

  return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  long long int res = 0;
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      if (i * j < n)
        res++;
    }
  }
  cout << res << endl;
  return 0;
}

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


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

// Template START
#define endl "\\n"
#define async                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
#define Int long long int
#define all(y) y.begin(), y.end()
#define present(x, y) (x.find(y) != x.end())
const int mod = (int)1e9 + 7;
template <class T> auto matrix(int r, int c, T v) {
  return vector<vector<T>>(r, vector<T>(c, v));
}
template <class T> auto matrix(int o1, int o2, int o3, T v) {
  return vector<vector<vector<T>>>(o1, vector<vector<T>>(o2, vector<T>(o3, v)));
}
#define v vector
// Template END

int power(int x, int n) {
  if (n == 0)
    return 1;
  else if (n & 1)
    return (x * power((x * x) % mod, n / 2)) % mod;
  return power((x * x) % mod, n / 2) % mod;
}

signed main() {
  int N;
  cin >> N;
  int sqrtN = sqrt(N);
  int ans = 0;
  int make, sq;
  for (int c = 1; c < N; c++) {
    make = N - c;
    sq = sqrt(make);
    for (int i = 1; i <= sq; i++) {
      if (make % i == 0) {
        if ((i * i) == make) {
          ans += 1;
        } else {
          ans += 2;
        }
      }
    }
  }
  cout << ans;
  return 0;
}

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

// Template START
#define endl "\\n"
#define async                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
#define Int long long int
#define all(y) y.begin(), y.end()
#define present(x, y) (x.find(y) != x.end())
const int mod = (int)1e9 + 7;
template <class T> auto matrix(int r, int c, T v) {
  return vector<vector<T>>(r, vector<T>(c, v));
}
template <class T> auto matrix(int o1, int o2, int o3, T v) {
  return vector<vector<vector<T>>>(o1, vector<vector<T>>(o2, vector<T>(o3, v)));
}
#define v vector
// Template END

int power(int x, int n) {
  if (n == 0)
    return 1;
  else if (n & 1)
    return (x * power((x * x) % mod, n / 2)) % mod;
  return power((x * x) % mod, n / 2) % mod;
}

signed main() {
  int N;
  cin >> N;
  int sqrtN = sqrt(N);
  int ans = 0;
  for (int a = 1; a <= N; a++) {
    ans += (ceil((N * 1.0) / a) - 1);
  }
  cout << ans;
  return 0;
}


// Problem : C - A x B + C
// Contest : AtCoder - AtCoder Beginner Contest 179
// URL : https://atcoder.jp/contests/abc179/tasks/abc179_c
// Memory Limit : 1024 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;

#define int long long
#define db double
#define mod 1000000007
#define pb push_back
#define pp pair<int, int>
#define rep(i, a, b) for (int i = a; i < b; i++)
#define repe(i, a, b) for (int i = a; i <= b; i++)
#define repr(i, a, b) for (int i = b; i >= a; i--)
#define maxn 200005
#define ss second
#define ff first
#define all(a) a.begin(), a.end()
#define lb lower_bound
#define ub upper_bound
#define ordered_set                                                            \\
  tree<int, null_type, less<int>, rb_tree_tag,                                 \\
       tree_order_statistics_node_update>
int inv(int a, int b) { return 1 < a ? b - inv(b % a, a) * b / a : 1; }
void solve() {
  int n, ans = 0;
  cin >> n;
  for (int i = 1; i < n; i++) {
    for (int j = 1; j <= sqrt(i); j++) {
      if (i % j == 0)
        ans += 2;
      if (j == sqrt(i))
        ans--;
    }
  }
  cout << ans;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  // cin >> t;
  while (t--)
    solve();
  return 0;
}

// Problem : C - A x B + C
// Contest : AtCoder - AtCoder Beginner Contest 179
// URL : https://atcoder.jp/contests/abc179/tasks/abc179_c
// Memory Limit : 1024 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;

#define int long long
#define db double
#define mod 1000000007
#define pb push_back
#define pp pair<int, int>
#define rep(i, a, b) for (int i = a; i < b; i++)
#define repe(i, a, b) for (int i = a; i <= b; i++)
#define repr(i, a, b) for (int i = b; i >= a; i--)
#define maxn 1000005
#define ss second
#define ff first
#define all(a) a.begin(), a.end()
#define lb lower_bound
#define ub upper_bound
#define ordered_set                                                            \\
  tree<int, null_type, less<int>, rb_tree_tag,                                 \\
       tree_order_statistics_node_update>
int inv(int a, int b) { return 1 < a ? b - inv(b % a, a) * b / a : 1; }
int spf[maxn];
void solve() {
  int n, ans = 1;
  cin >> n;
  for (int i = 1; i <= n; i++)
    spf[i] = i;
  for (int i = 2; i <= n; i++)
    if (spf[i] == i)
      for (int j = i; j <= n; j += i)
        if (spf[j] == j)
          spf[j] = i;
  for (int i = 2; i < n; i++) {
    unordered_map<int, int> mp;
    int j = i;
    while (j > 1) {
      mp[spf[j]]++;
      j /= spf[j];
    }
    int tmp = 1;
    for (auto [a, b] : mp)
      tmp *= (b + 1);
    ans += tmp;
  }
  cout << ans;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  // cin >> t;
  while (t--)
    solve();
  return 0;
}


// NAME-DEEPESH BHATT
// Institute-IIT Dhanbad
// MOTTO-THINK FIRST,CODE LATER

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll MOD = 1E9 + 7;
/*#define endl '\\n'*/
#define pb push_back
#define mp make_pair

// Check for signed int overflow
//  use __builtin_popcount(num) to calculate no.of setbits in num
// s.lower_bound() works in O(logn) whereas lower_bound(s.begin(),s.end(),x)
// works in O(n)

// Euclid's Algo
ll gcd(ll a, ll b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
// Extended Euclid's Algo
ll gcd_ex(ll a, ll b, ll &x, ll &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  ll x1, y1;
  ll g = gcd_ex(b, a % b, x1, y1);
  x = y1;
  y = x1 - y1 * (a / b);
  return g;
}
// Multiplicative Modulo Inv
ll multi_mod_inv(ll a, ll m) {
  ll x, y;
  ll g = gcd_ex(a, m, x, y);
  if (g != 1) {
    return -1;
  }
  x = (x % m + m) % m;
  return x;
}
// Mod division
ll mod_div(ll a, ll b, ll m) {
  //(a/b)mod m?
  if (multi_mod_inv(b, m) != -1) {
    return (a % m * multi_mod_inv(b, m) % m) % m;
  } else {
    return -1;
  }
}
// lcm
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
// Binary Exponentiation
ll power(ll a, ll n) {
  if (n == 0)
    return 1;
  ll p = power(a, n / 2);
  p = (p * p) % MOD;
  if (n % 2)
    return (p * a) % MOD;
  else
    return p % MOD;
}
// Euler Totient Function
ll phi[1000001] = {0};
void euler_totient(ll n) {
  for (ll i = 0; i <= n; i++) {
    phi[i] = i;
  }
  phi[1] = 1;
  for (ll i = 2; i <= n; i++) {
    if (i == phi[i]) {
      phi[i] = i - 1; // For a prime number phi(p)=p-1
      for (ll j = 2 * i; j <= n; j += i) {
        phi[j] = phi[j] * (i - 1) / i;
      }
    }
  }
}
void sieve(vector<ll> &is_prime) {
  is_prime[0] = is_prime[1] = 0;
  for (ll i = 2; i * i <= 1000000; i++) {
    if (is_prime[i]) {
      for (ll j = i * i; j <= 1000000; j += i) {
        is_prime[j] = 0;
      }
    }
  }
}
int32_t main() {
  /*freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);*/
  ios_base::sync_with_stdio(false); // for fast I/O operation
  cin.tie(nullptr);
  ll t = 1;
  /*cin>>t;*/
  while (t--) {
    ll n;
    cin >> n;
    vector<ll> is_prime(1000001, 1);
    sieve(is_prime);
    ll count = 0;
    for (ll j = 1; j <= n - 1; j++) {
      ll c = 0;
      if (is_prime[j] == 1) {
        c += 2;
      } else {
        for (ll i = 1; i * i <= j; i++) {
          if (j % i == 0) {
            if (i == j / i) {
              c++;
            } else {
              c += 2;
            }
          }
        }
      }
      /*cout<<c<<" ";*/
      count += c;
    }
    cout << endl << count << endl;
  }
  return 0;
}

// NAME-DEEPESH BHATT
// Institute-IIT Dhanbad
// MOTTO-THINK FIRST,CODE LATER

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll MOD = 1E9 + 7;
/*#define endl '\\n'*/
#define pb push_back
#define mp make_pair

// Check for signed int overflow
//  use __builtin_popcount(num) to calculate no.of setbits in num
// s.lower_bound() works in O(logn) whereas lower_bound(s.begin(),s.end(),x)
// works in O(n)

// Euclid's Algo
ll gcd(ll a, ll b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
// Extended Euclid's Algo
ll gcd_ex(ll a, ll b, ll &x, ll &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  ll x1, y1;
  ll g = gcd_ex(b, a % b, x1, y1);
  x = y1;
  y = x1 - y1 * (a / b);
  return g;
}
// Multiplicative Modulo Inv
ll multi_mod_inv(ll a, ll m) {
  ll x, y;
  ll g = gcd_ex(a, m, x, y);
  if (g != 1) {
    return -1;
  }
  x = (x % m + m) % m;
  return x;
}
// Mod division
ll mod_div(ll a, ll b, ll m) {
  //(a/b)mod m?
  if (multi_mod_inv(b, m) != -1) {
    return (a % m * multi_mod_inv(b, m) % m) % m;
  } else {
    return -1;
  }
}
// lcm
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
// Binary Exponentiation
ll power(ll a, ll n) {
  if (n == 0)
    return 1;
  ll p = power(a, n / 2);
  p = (p * p) % MOD;
  if (n % 2)
    return (p * a) % MOD;
  else
    return p % MOD;
}
// Euler Totient Function
ll phi[1000001] = {0};
void euler_totient(ll n) {
  for (ll i = 0; i <= n; i++) {
    phi[i] = i;
  }
  phi[1] = 1;
  for (ll i = 2; i <= n; i++) {
    if (i == phi[i]) {
      phi[i] = i - 1; // For a prime number phi(p)=p-1
      for (ll j = 2 * i; j <= n; j += i) {
        phi[j] = phi[j] * (i - 1) / i;
      }
    }
  }
}
/*void sieve(vector<ll>&is_prime){
    is_prime[0]=is_prime[1]=0;
    for(ll i=2;i*i<=1000000;i++){
        if(is_prime[i]){
            for(ll j=i*i;j<=1000000;j+=i){
                is_prime[j]=0;
            }
        }
    }
}*/
int32_t main() {
  /*freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);*/
  ios_base::sync_with_stdio(false); // for fast I/O operation
  cin.tie(nullptr);
  ll t = 1;
  /*cin>>t;*/
  while (t--) {
    ll n;
    cin >> n;
    /*vector<ll>is_prime(1000001,1);
    sieve(is_prime);*/
    vector<ll> ans(n, 2);
    ans[1] = 1;
    for (ll i = 2; i * i <= n; i++) {
      for (ll j = i * i; j <= n; j += i) {
        if (i == j / i)
          ans[j]++;
        else {
          ans[j] += 2;
        }
      }
    }
    ll sum = 0;
    for (ll j = 1; j <= n - 1; j++) {
      sum += ans[j];
      /*cout<<ans[j]<<" ";*/
    }
    /*cout<<endl;*/
    cout << sum << endl;
  }
  return 0;
}


#include <algorithm>
#include <cassert>
#include <cmath>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <stack>
#include <string>
#include <vector>
#define REP(i, n) for (int i = 0; i < n; i++)
#define REPR(i, n) for (int i = n; i >= 0; i--)
#define FOR(i, m, n) for (int i = m; i < n; i++)
#define INF 1000000007
#define ALL(v) v.begin(), v.end()
using namespace std;
typedef long long ll;

// 素因数分解
template <typename T> map<T, T> prime_factor(T n) {
  map<T, T> ret;
  for (T i = 2; i * i <= n; i++) {
    T tmp = 0;
    while (n % i == 0) {
      tmp++;
      n /= i;
    }
    ret[i] = tmp;
  }
  if (n != 1)
    ret[n] = 1;
  return ret;
}
/*  divisor_num(n)
    入力：整数 n
    出力：nの約数の個数
    計算量：O(√n)
*/
template <typename T> T divisor_num(T N) {
  map<T, T> pf = prime_factor(N);
  T ret = 1;
  for (auto p : pf) {
    ret *= (p.second + 1);
  }
  return ret;
}

int main() {
  int N;
  cin >> N;
  int c = 1;
  for (int i = 2; i < N; i++) {
    c = c + divisor_num(i);
  }
  cout << c << endl;
}

#include <algorithm>
#include <cassert>
#include <cmath>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <stack>
#include <string>
#include <vector>
#define REP(i, n) for (int i = 0; i < n; i++)
#define REPR(i, n) for (int i = n; i >= 0; i--)
#define FOR(i, m, n) for (int i = m; i < n; i++)
#define INF 1000000007
#define ALL(v) v.begin(), v.end()
using namespace std;
typedef long long ll;

int prime_factor(int a) {
  int ans = 1;
  for (int i = 2; i <= sqrt(a); i++) {
    int cnt = 0;
    while (a % i == 0) {
      cnt++;
      a /= i;
    }
    ans *= (cnt + 1);
    if (a == 1)
      break;
  }
  if (a != 1)
    ans *= 2;
  return ans;
}

int main() {
  int N;
  cin >> N;
  int c = 1;
  for (int i = 2; i < N; i++) {
    c += prime_factor(i);
  }
  cout << c << endl;
}


#include <bits/stdc++.h>
#define pb emplace_back
#define ll long long
#define mp make_pair
#define PI acos(-1)
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ll i, j, k, x, y, z, m, n, t, l, r;
  cin >> n;
  m = n;
  set<pair<ll, pair<ll, ll>>> s;
  ll cnt = 0;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (i * j < m) {
        x = i * j;
        s.insert(mp(i, mp(j, m - x)));
        s.insert(mp(j, mp(i, m - x)));
      } else
        break;
    }
  }
  cout << s.size() << '\\n';
}

#include <bits/stdc++.h>
#define pb emplace_back
#define ll long long
#define mp make_pair
#define PI acos(-1)
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ll i, j, k, x, y, z, m, n, t, l, r;
  cin >> n;
  m = n;
  set<pair<ll, pair<ll, ll>>> s;
  ll cnt = 0;
  for (i = 1; i < n; i++) {
    l = i; // cout<<double(n)/double(l)<<'\\n';
    for (j = 1; j < double(n) / double(l); j++) {
      cnt++;
    }
  }
  cout << cnt << '\\n';
}


#include <bits/stdc++.h>
using namespace std;
#define fast_io                                                                \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define forp(i, a, b) for (int i = (a); i < (b); i++)
#define forn(i, a, b) for (int i = (a); i > (b); i--)
#define mod 1000000007
#define multiple_testcases_t                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--) {                                                                \\
    solve();                                                                   \\
  }
#define single_testcase_t solve();
typedef long long int ll;
typedef vector<int> vi;
typedef pair<int, int> pii;

int divisors(int n) {
  int ans = 0;
  // cout<<sqrt(n)+1;
  forp(i, 1, (int)(sqrt(n) + 1)) {
    if (n % i == 0) {
      if (n / i == i)
        ans++;
      else
        ans += 2;
    }
  }
  return ans;
}
// <----- Actual solve() function to print output -----> //
void solve() {
  ll n, p, q, x, y, k = 0;
  cin >> n;
  k = 1;
  forp(i, 2, n) { k += divisors(i); }
  cout << k;
  // cout<<"\\n";      //if t>1 uncomment this
}

// MAIN function
// --------------------------------------------------------------------------//
int main() {
  fast_io
      //  freopen("input.txt", "r", stdin);
      //  freopen("output.txt", "w", stdout);

      single_testcase_t
      // multiple_testcases_t
      return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define fast_io                                                                \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define forp(i, a, b) for (int i = (a); i < (b); i++)
#define forn(i, a, b) for (int i = (a); i > (b); i--)
#define mod 1000000007
#define multiple_testcases_t                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--) {                                                                \\
    solve();                                                                   \\
  }
#define single_testcase_t solve();
typedef long long int ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
vector<int> primes;

int is_prime(long long int n) {
  if (n == 1)
    return 0;
  for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) {
      return 0;
    }
  }
  return 1;
}

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])
      primes.PB(p);
}

ll divisors(int n) {
  ll ans = 1;
  forp(i, 0, primes.size()) {
    if (primes[i] * primes[i] * primes[i] > n)
      break;
    int c = 1;
    while (n % primes[i] == 0) {
      n /= primes[i];
      c++;
    }
    ans = ans * c;
  }

  if (is_prime(n))
    ans *= 2;
  else if (is_prime((int)sqrt(n)) == 1 && ((int)sqrt(n)) * ((int)sqrt(n)) == n)
    ans *= 3;
  else if (n != 1)
    ans *= 4;

  return ans;
}
// <----- Actual solve() function to print output -----> //
void solve() {
  ll n, p, q, x, y, k = 0;
  cin >> n;
  vector<int> d(1000001);
  SieveOfEratosthenes(1000000);
  forp(i, 1, n) {
    p = divisors(i);
    k = k + p;
    // cout<<i<<" "<<p<<"\\n";
  }
  cout << k;
  // cout<<"\\n";      //if t>1 uncomment this
}

// MAIN function
// --------------------------------------------------------------------------//
int main() {
  fast_io
      //  freopen("input.txt", "r", stdin);
      //  freopen("output.txt", "w", stdout);

      single_testcase_t
      // multiple_testcases_t
      return 0;
}


#include <algorithm>
#include <cmath>
#include <deque>
#include <iostream>
#include <map>
#include <queue>
#include <stack>
#include <string>
#include <vector>

#define pb push_back
#define rep(i, n) for (int i = 0; i < (n); i++)
#define reps(i, n, s) for (int i = (s); i < (n); i++)
#define rrep(i, n) for (int i = (n - 1); i >= 0; i--)
#define rreps(i, n, s) for (int i = s; i >= n; i--)
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}

using ll = long long;
using namespace std;
constexpr long long MAX = 5100000;
constexpr long long INF = 1LL << 60;
constexpr int MOD = 1000000007;

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll n;
  cin >> n;
  int cnt = 0;
  reps(c, n, 1) {
    reps(b, n, 1) {
      double a = (n - c) / (double)b;
      if (a > 0 && ceil(a) == floor(a)) {
        cnt++;
      }
    }
  }
  cout << cnt << endl;
  return 0;
}

#include <algorithm>
#include <cmath>
#include <deque>
#include <iostream>
#include <map>
#include <queue>
#include <stack>
#include <string>
#include <vector>

#define pb push_back
#define rep(i, n) for (int i = 0; i < (n); i++)
#define reps(i, n, s) for (int i = (s); i < (n); i++)
#define rrep(i, n) for (int i = (n - 1); i >= 0; i--)
#define rreps(i, n, s) for (int i = s; i >= n; i--)
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}

using ll = long long;
using namespace std;
constexpr long long MAX = 5100000;
constexpr long long INF = 1LL << 60;
constexpr int MOD = 1000000007;

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll n;
  cin >> n;
  int cnt = 0;
  int same = 0;
  reps(a, sqrt(n), 1) {
    reps(b, n, a) {
      if (a * b < n) {
        if (a == b)
          cnt++;
        else
          cnt += 2;
      }
    }
  }
  cout << cnt << endl;
  return 0;
}