#include <bits/stdc++.h>

using ll = long long;
using ull = unsigned long long;
using namespace std;
constexpr int inf = 1 << 30;
constexpr int mo = 1e9 + 7;
constexpr ll infl = 1ll << 60;

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

  int n;
  cin >> n;
  int pat = 0;
  for (int c = 1; c <= n; ++c) {
    int tmp = n - c;
    for (int a = 1; a * a <= tmp; ++a)
      if (tmp % a == 0) {
        if (a != tmp / a)
          pat += 2;
        else
          pat++;
      }
  }
  cout << pat << endl;
  return 0;
}

#include <bits/stdc++.h>

using ll = long long;
using ull = unsigned long long;
using namespace std;
constexpr int inf = 1 << 30;
constexpr int mo = 1e9 + 7;
constexpr ll infl = 1ll << 60;

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

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


// is there any case of -1 or any special corner cases ?
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int, int>
#define all(v) v.begin(), v.end()
#define zeros(arr) memset(arr, 0, sizeof(arr));
#define precise(num)                                                           \\
  cout << fixed;                                                               \\
  cout << std::setprecision(num)
#define nl cout << "\\n";
#define test                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
const int maxx = 3 * 1e5, limit = 9 * 1e18, MOD = 1e9 + 7;
#define boost                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define endl '\\n';
int32_t main() {
  boost;
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i <= 1e6; i++) {

    int num = n - i;
    for (int j = 1; j * j <= num; j++) {
      if (num % j == 0) {
        ans += 2;
        if (num / j == j)
          ans--;
      }
    }
  }
  cout << ans << endl;
}

// is there any case of -1 or any special corner cases ?
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int, int>
#define all(v) v.begin(), v.end()
#define zeros(arr) memset(arr, 0, sizeof(arr));
#define precise(num)                                                           \\
  cout << fixed;                                                               \\
  cout << std::setprecision(num)
#define nl cout << "\\n";
#define test                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
const int maxx = 3 * 1e5, limit = 9 * 1e18, MOD = 1e9 + 7;
#define boost                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define endl '\\n';
int32_t main() {
  boost;
  int n;
  cin >> n;

  int prime[n + 2];
  zeros(prime);
  for (int i = 2; i <= n; i++) {
    if (prime[i] == 0) {
      prime[i] = i;
      for (int j = i * i; j <= n; j = j + i) {
        prime[j] = i;
      }
    }
  }
  // for(int)

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

    int num = n - i;
    // map<int,int>cn;
    int res = 1;
    while (num > 1) {
      int cp = 0;
      int p1 = prime[num];
      // cout<<num<<" "<<p1<<endl;
      while (num > 1 && num % p1 == 0) {
        num /= p1;
        // cout<<num<<" "<<p1<<endl;
        cp++;
      }
      res = res * (cp + 1);
    }

    ans = ans + res;
  }
  cout << ans << endl;
}


#include <bits/stdc++.h>
#define REP(i, n) for (int i = 0; i < n; i++)
#define RREP(i, n) for (int i = n; i >= 0; i--)
#define FOR(i, m, n) for (int i = m; i < n; i++)
#define ALL(v) v.begin(), v.end()
#define RALL(v) v.rbegin(), v.rend()
using namespace std;
typedef long long ll;
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
// const ll INF = 1LL << 60;
// const int INF = 1001001001;
vector<int64_t> divisor(int64_t n) {
  vector<int64_t> ret;
  for (int64_t i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      ret.push_back(i);
      if (i * i != n)
        ret.push_back(n / i);
    }
  }
  sort(begin(ret), end(ret));
  return (ret);
}
vector<bool> prime_table(int n) {
  vector<bool> prime(n + 1, true);
  if (n >= 0)
    prime[0] = false;
  if (n >= 1)
    prime[1] = false;
  for (int i = 2; i * i <= n; i++) {
    if (!prime[i])
      continue;
    for (int j = i + i; j <= n; j += i) {
      prime[j] = false;
    }
  }
  return prime;
}

int main(void) {
  int n;
  cin >> n;
  ll ans = 0;
  auto p = prime_table(n);
  for (int ab = 1; ab <= n - 1; ab++) {
    if (p[ab]) {
      ans += 2;
      continue;
    }
    auto v = divisor(ab);
    ans += v.size();
  }
  cout << ans;
  return 0;
}

#include <bits/stdc++.h>
#define REP(i, n) for (int i = 0; i < n; i++)
#define RREP(i, n) for (int i = n; i >= 0; i--)
#define FOR(i, m, n) for (int i = m; i < n; i++)
#define ALL(v) v.begin(), v.end()
#define RALL(v) v.rbegin(), v.rend()
using namespace std;
typedef long long ll;
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
// const ll INF = 1LL << 60;
// const int INF = 1001001001;

int main(void) {
  int n;
  cin >> n;
  ll ans = 0;
  for (int a = 1; a < n; a++) {
    int bs = (n - 1) / a;
    ans += bs;
  }
  cout << ans;
  return 0;
}


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

using namespace std;

typedef pair<int, int> p;
typedef long long ll;
const int inf = 1000000007;

int main() {
  int n;
  cin >> n;
  ll ans = 0;
  for (int c = 1; c <= n - 1; c++) {
    ll ab = n - c;
    ll cnt = 0;
    for (int i = 1; i * i <= ab; i++) {
      // int cnt = 2;
      if (ab % i == 0) {
        if (i == ab / i)
          cnt += 1;
        else
          cnt += 2;
      }
      // ans += cnt;
    }
    ans += cnt;
  }
  cout << ans << endl;
  return 0;
}

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

using namespace std;

typedef pair<int, int> p;
typedef long long ll;
const int inf = 1000000007;

int main() {
  int n;
  cin >> n;
  ll res = 0;
  for (int c = 1; c <= n - 1; c++) {
    ll ans = 1;
    ll ab = n - c;
    for (int i = 2; i * i <= ab; i++) {
      ll cnt = 0;
      while (ab % i == 0) {
        cnt++;
        ab /= i;
      }
      ans *= (cnt + 1);
      // ans += cnt;
    }
    if (ab != 1)
      ans *= 2;
    // ans += cnt;
    res += ans;
  }
  cout << res << endl;
  return 0;
}


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

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  ll i, j, t, n, a, b, c, ans = 0;

  cin >> n;
  for (i = 1; i <= n - 1; i++) {
    for (j = 1; j <= sqrt(n - i); j++) {
      if ((n - i) % j == 0)
        ans += 2;
    }
    if (round(sqrt(i)) * round(sqrt(i)) == i)
      ans--;
  }

  cout << ans << endl;
}

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

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  ll i, j, t, n, a, b, c, ans = 0;

  cin >> n;
  for (i = 1; i < n; i++) {
    for (j = 1; i * j < n; j++) {
      ans++;
    }
  }

  cout << ans << endl;
}


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

long long divisor(long long N) {
  vector<long long> res;
  for (long long i = 1; i * i <= N; ++i) {
    if (N % i == 0) {
      res.push_back(i);
      // 重複しないならば i の相方である N/i も push
      if (N / i != i)
        res.push_back(N / i);
    }
  }
  return res.size();
}
int main() {
  long long N;
  cin >> N;
  long long M = N;
  int ans;
  int ansans = 0;
  rep(i, N - 1) {
    M -= 1;

    ans = divisor(M);
    ansans += ans;
  }
  cout << ansans << endl;
}

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

long long prime_factorize(long long N) {
  long long ansa = 1;
  for (long long a = 2; a * a <= N; ++a) {
    if (N % a != 0)
      continue;
    long long ex = 0; // 指数

    // 割れる限り割り続ける
    while (N % a == 0) {
      ++ex;
      N /= a;
    }

    // その結果を push
    ansa *= (ex + 1);
  }

  // 最後に残った数について
  if (N != 1)
    ansa *= 2;
  return ansa;
}

int main() {
  long long N;
  cin >> N;
  long long M = N;
  int ans;
  int ansans = 0;
  rep(i, N - 1) {
    M -= 1;

    ans = prime_factorize(M);
    ansans += ans;
  }
  cout << ansans << endl;
}


#include <cmath>
#include <iostream>
#include <vector>

using namespace std;

int main() {

  int N;
  cin >> N;

  int ans = 0;
  for (int i = 1; i < N; ++i) {
    for (int j = 1; i * j < N; ++j) {
      for (int k = 1; k <= N - i * j; ++k) {
        if (i * j + k == N) {
          ans++;
        }
      }
    }
  }

  cout << ans;

  return 0;
}

#include <cmath>
#include <iostream>
#include <vector>

using namespace std;

int Function(int n) {
  int ans = 0;
  int tmp = 0;
  for (int i = 1; i <= sqrt(n); ++i) {
    if (i * i == n) {
      tmp = 1;
      break;
    }
    if (n % i == 0)
      ans++;
  }
  return ans * 2 + tmp;
}

int main() {

  int N;
  cin >> N;

  int ans = 0;
  for (int i = 1; i < N; ++i) {
    int buf = N - i;
    ans += Function(buf);
  }
  cout << ans;

  return 0;
}


#include <bits/stdc++.h>
#include <limits>
using namespace std;
typedef unsigned long long int ull;
typedef long long int ll;
#define fi(i, n) for (ll i = 0; i < n; i++)
#define f(i, a, b) for (ll i = a; i < b; i++)
#define vi vector<int>
#define pb push_back
#define MOD 1000000007

ll digits(ll n) { return floor(log10(double(n))) + 1; }
vector<ll> SieveOfEratosthenes(ll n, ll a) {
  bool prime[n + 1];
  memset(prime, true, sizeof(prime));
  vector<ll> v;
  for (ll p = 2; p * p <= n; p++) {
    if (prime[p] == true) {

      for (ll i = p * p; i <= n; i += p)
        prime[i] = false;
    }
  }

  for (ll p = a; p <= n; p++)
    if (prime[p])
      v.push_back(p);
  return v;
}
void permute(string a, int l, int r) {
  // permutes string
  if (l == r) {
    cout << a << endl;
  } else {
    for (int i = l; i <= r; i++) {
      swap(a[l], a[i]);
      permute(a, l + 1, r);
    }
  }
}
int main() {
  int n;
  cin >> n;
  int factors[n + 1];
  factors[0] = 0;
  factors[1] = 1;
  for (int i = 2; i <= n; i++) {
    int count = 0;
    for (int j = 1; j <= sqrt(i); j++) {
      if (i % j == 0) {
        if (i / j == j) {
          count++;
        } else
          count += 2;
      }
    }
    factors[i] = count;
  }

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

#include <bits/stdc++.h>
#include <limits>
using namespace std;
typedef unsigned long long int ull;
typedef long long int ll;
#define fi(i, n) for (ll i = 0; i < n; i++)
#define f(i, a, b) for (ll i = a; i < b; i++)
#define vi vector<int>
#define pb push_back
#define MOD 1000000007

ll digits(ll n) { return floor(log10(double(n))) + 1; }
vector<ll> SieveOfEratosthenes(ll n, ll a) {
  bool prime[n + 1];
  memset(prime, true, sizeof(prime));
  vector<ll> v;
  for (ll p = 2; p * p <= n; p++) {
    if (prime[p] == true) {

      for (ll i = p * p; i <= n; i += p)
        prime[i] = false;
    }
  }

  for (ll p = a; p <= n; p++)
    if (prime[p])
      v.push_back(p);
  return v;
}
void permute(string a, int l, int r) {
  // permutes string
  if (l == r) {
    cout << a << endl;
  } else {
    for (int i = l; i <= r; i++) {
      swap(a[l], a[i]);
      permute(a, l + 1, r);
    }
  }
}
int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; i++) {
    for (int j = 1; i * j < n; j++) {
      ans++;
    }
  }
  cout << ans;
}


#include <bits/stdc++.h>
using namespace std;
int main() {
  int B = 1;
  int C = 1;
  int N;
  cin >> N;
  int count = 0;
  while (B < N) {
    if ((N - C) % B == 0) {
      count++;
      C++;
      B = 1;
    } else
      B++;
  }
  cout << count << endl;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
  int A;
  int N;
  cin >> N;
  int count = 0;
  for (A = 1; A < N; A++) {
    count += (N - 1) / A;
  }
  cout << count << endl;
}


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

int main() {
  int N;
  cin >> N;
  int ans = 0;
  for (int C = 1; C < N; C++) {
    int k = N - C;
    int Q = sqrt(k);
    for (int A = 1; A <= Q; A++) {
      int d, e;
      d = k % A;
      e = k / A;
      if (d == 0) {
        ans = ans + 2;
        if (e == A) {
          ans--;
        }
      }
    }
  }
  cout << ans << endl;
}

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

int main() {
  int N;
  cin >> N;
  int ans = 0;
  for (int C = 1; C < N; C++) {
    int k = N - C;
    int Q = sqrt(k);
    if (Q * Q == k)
      ans--;
    for (int A = 1; A <= Q; A++) {
      int d;
      d = k % A;
      if (d == 0) {
        ans = ans + 2;
      }
    }
  }
  cout << ans << endl;
}


#include <bits/stdc++.h>
#define ll long long int
#define ull unsigned long long int
#define ld long double
#define mod 1000000007
#define fi(i, start, end) for (int i = start; i < end; ++i)
#define fd(i, end, start) for (int i = end - 1; i >= start; --i)
#define pb push_back
#define mz(a) memset(a, 0, sizeof(a))
#define nl cout << endl;
#define ip(n) cin >> n;
#define op(n) cout << n;
#define FT()                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define inparr fi(i, 0, n) ip(a[i]);
#define dispar                                                                 \\
  fi(i, 0, n) op(a[i]);                                                        \\
  nl;
#define Fastio                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
using namespace std;

ll printDivisors(ll n) {
  ll cnt = 0;
  // Note that this loop runs till square root
  for (ll i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      // If divisors are equal, print only one
      if (n / i == i)
        cnt++;

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

bool isPrime(ll n) {
  // Corner cases
  if (n <= 1)
    return false;
  if (n <= 3)
    return true;

  // This is checked so that we can skip
  // middle five numbers in below loop
  if (n % 2 == 0 || n % 3 == 0)
    return false;

  for (ll i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0)
      return false;

  return true;
}

void solve() {
  ll n;
  cin >> n;
  ll ans = 0;
  for (ll i = 1; i < n; i++) {
    ll no = n - i;
    if (isPrime(no)) {
      ans += 2;
    } else {
      ans += printDivisors(no);
    }
  }

  cout << ans;
}
int main() {
  /*#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
  #endif*/
  // FT()
  solve();

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

#include <bits/stdc++.h>
#define ll long long int
#define ull unsigned long long int
#define ld long double
#define mod 1000000007
#define fi(i, start, end) for (int i = start; i < end; ++i)
#define fd(i, end, start) for (int i = end - 1; i >= start; --i)
#define pb push_back
#define mz(a) memset(a, 0, sizeof(a))
#define nl cout << endl;
#define ip(n) cin >> n;
#define op(n) cout << n;
#define FT()                                                                   \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define inparr fi(i, 0, n) ip(a[i]);
#define dispar                                                                 \\
  fi(i, 0, n) op(a[i]);                                                        \\
  nl;
#define Fastio                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
using namespace std;
const int MAX = 1000001;

// array to store prime factors
int 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 (int i = 2; i < MAX; i++)
    factor[i] = i;

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

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

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

  int ans = 1;

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

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

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

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

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

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

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

  return ans;
}

void solve() {
  int n;
  cin >> n;
  ll ans = 0;
  generatePrimeFactors();
  for (ll i = 1; i < n; i++) {
    ll no = n - i;
    ans += calculateNoOFactors(no);
  }

  cout << ans;
}
int main() {
  /*#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
  #endif*/
  // FT()
  solve();

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


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

int main() {
  int a;
  cin >> a;
  int ans = 0, wa = 0;
  for (int i = 1; i <= (a + 1) / 2; i++)
    for (int j = i; j <= a - 1; j++) {
      if (i * j < a)
        ans++;
      if (i == j && i * j < a)
        wa++;
    }
  cout << ans * 2 - wa;
  return 0;
}

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

int main() {
  long long a;
  cin >> a;
  long long ans = 0, wa = 0;
  int n;
  n = sqrt(a);
  for (long long i = 1; i <= n; i++)
    for (long long j = i; j <= a - 1; j++) {
      if (i * j < a)
        ans++;
      if (i == j && i * j < a)
        wa++;
    }
  cout << ans * 2 - wa;
  return 0;
}


/* To Kaise Hain Aaplog*/

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define all(x) (x).begin(), (x).end()

void shuru_krte_hai_bina_kisi_bakchodi_ke() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif // ONLINE_JUDGE
}

const int mod = 1e9 + 7;
const int s = 1e6 + 1;
void Sieve(int n, bool isprime[], bool primesquare[], int a[]) {

  for (int i = 2; i <= n; i++)
    isprime[i] = true;

  for (int i = 0; i <= (n * n + 1); i++)
    primesquare[i] = false;

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

  for (int p = 2; p * p <= n; p++) {

    if (isprime[p] == true) {

      for (int i = p * 2; i <= n; i += p)
        isprime[i] = false;
    }
  }

  int j = 0;
  for (int p = 2; p <= n; p++) {
    if (isprime[p]) {

      a[j] = p;

      primesquare[p * p] = true;
      j++;
    }
  }
}

int countdiv(int n) {

  if (n == 1)
    return 1;

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

  int a[n];
  Sieve(n, isprime, primesquare, a);

  int answer = 1;

  for (int i = 0;; i++) {

    if (a[i] * a[i] * a[i] > n)
      break;

    int count = 1;
    while (n % a[i] == 0) {
      n = n / a[i];
      count = count + 1;
    }

    answer = answer * count;
  }

  if (isprime[n])
    answer = answer * 2;

  else if (primesquare[n])
    answer = answer * 3;

  else if (n != 1)
    answer = answer * 4;

  return answer;
}

int32_t main() {

  // shuru_krte_hai_bina_kisi_bakchodi_ke();
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; i++) {
    int val = n - i;
    int x = countdiv(val);
    ans += x;
  }
  cout << ans << "\\n";

  return 0;
}

/* To Kaise Hain Aaplog*/

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define all(x) (x).begin(), (x).end()

void shuru_krte_hai_bina_kisi_bakchodi_ke() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif // ONLINE_JUDGE
}

const int mod = 1e9 + 7;
const int s = 1e6 + 1;

int32_t main() {

  // shuru_krte_hai_bina_kisi_bakchodi_ke();
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  int div[n + 10] = {0};
  for (int i = 1; i <= n; i++) {
    for (int j = i; j <= n; j += i) {
      div[j]++;
    }
  }
  int ans = 0;
  for (int i = 1; i < n; i++) {
    // deb2(div[n-i],n-i);
    ans += div[n - i];
  }
  cout << ans;
  return 0;
}


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

typedef long long ll;
typedef int64_t i6;
typedef std::vector<std::vector<int64_t>> Graph;

#define rep(i, n) for (int64_t i = 0; i < n; ++i)
#define rep2(i, n) for (int64_t i = 1; i <= n; ++i)
#define repb(i, l, n) for (int64_t i = l; i < n; ++i)
#define repb2(i, l, n) for (int64_t i = l; i <= n; ++i)
#define repe(a, b) for (auto &(a) : (b))
#define ALL(v) (v).begin(), (v).end()
#define Sort(x) sort(ALL(x))
#define Sort_rev(x)                                                            \\
  Sort(x);                                                                     \\
  reverse(ALL(x))
#define mp(a, b) make_pair((a), (b))
#define Push_back(a, b) push_back(mp((a), (b)))

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 (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename V, typename T> bool find_num(V v, T num) {
  if (find(ALL(v), num) == v.end()) {
    return false;
  }
  return true;
}

const int inf = 0x3fffffff;
const int64_t INF = 0x3fffffffffffffff;
const int64_t MOD = 1e9 + 7;

int64_t enum_div(int64_t n) {
  vector<int64_t> ret;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0) {
      ret.push_back(i);
      if (i * i != n) {
        ret.push_back(n / i);
      }
    }
  }
  return ret.size();
}

int64_t enum_div2(int64_t n) {
  vector<int64_t> ret;
  rep2(i, n - 1) {
    for (int j = 1; j * j <= i; ++j) {
      if (i % j == 0) {
        ret.push_back(j);
        if (j * j != i) {
          ret.push_back(i / j);
        }
      }
    }
    // ans += ret.size();
  }
  return ret.size();
}

int main() {
  int64_t n;
  cin >> n;
  // std::vector<int64_t> v;
  /*
  int64_t ans = 0;
  rep2(i, n-1) {
      ans += enum_div(i);
  }
  cout << ans << endl;
  */

  cout << enum_div2(n) << endl;
  return 0;
}

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

typedef long long ll;
typedef int64_t i6;
typedef std::vector<std::vector<int64_t>> Graph;

#define rep(i, n) for (int64_t i = 0; i < n; ++i)
#define rep2(i, n) for (int64_t i = 1; i <= n; ++i)
#define repb(i, l, n) for (int64_t i = l; i < n; ++i)
#define repb2(i, l, n) for (int64_t i = l; i <= n; ++i)
#define repe(a, b) for (auto &(a) : (b))
#define ALL(v) (v).begin(), (v).end()
#define Sort(x) sort(ALL(x))
#define Sort_rev(x)                                                            \\
  Sort(x);                                                                     \\
  reverse(ALL(x))
#define mp(a, b) make_pair((a), (b))
#define Push_back(a, b) push_back(mp((a), (b)))

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 (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename V, typename T> bool find_num(V v, T num) {
  if (find(ALL(v), num) == v.end()) {
    return false;
  }
  return true;
}

const int inf = 0x3fffffff;
const int64_t INF = 0x3fffffffffffffff;
const int64_t MOD = 1e9 + 7;

int64_t enum_div(int64_t n) {
  vector<int64_t> ret;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0) {
      ret.push_back(i);
      if (i * i != n) {
        ret.push_back(n / i);
      }
    }
  }
  return ret.size();
}

int64_t enum_div2(int64_t n) {
  vector<int64_t> ret;
  rep2(i, n - 1) {
    for (int j = 1; j * j <= i; ++j) {
      if (i % j == 0) {
        ret.push_back(j);
        if (j * j != i) {
          ret.push_back(i / j);
        }
      }
    }
    // ans += ret.size();
  }
  return ret.size();
}

int main() {
  int64_t n;
  cin >> n;
  // std::vector<int64_t> v;
  /*
  int64_t ans = 0;
  rep2(i, n-1) {
      ans += enum_div(i);
  }
  cout << ans << endl;
  */

  // cout << enum_div2(n) << endl;
  int64_t ans = 0;
  rep2(i, n - 1) { ans += (n - 1) / i; }
  cout << ans << endl;
  return 0;
}


/*  -*- coding: utf-8 -*-
 *
 * c.cc: C - A x B + C
 */

#include <algorithm>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>

using namespace std;

/* constant */

/* typedef */

/* global variables */

/* subroutines */

/* main */

int main() {
  int n;
  scanf("%d", &n);

  int cnt = 0;
  for (int m = 1; m < n; m++)
    for (int p = 1; p * p <= m; p++)
      if (m % p == 0) {
        int q = m / p;
        cnt += (p != q) ? 2 : 1;
      }

  printf("%d\\n", cnt);
  return 0;
}

/*  -*- coding: utf-8 -*-
 *
 * c.cc: C - A x B + C
 */

#include <algorithm>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>

using namespace std;

/* constant */

const int MAX_N = 1000000;

/* typedef */

/* global variables */

int cs[MAX_N];

/* subroutines */

/* main */

int main() {
  int n;
  scanf("%d", &n);

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

  int sum = 0;
  for (int i = 1; i < n; i++)
    sum += cs[i];

  printf("%d\\n", sum);
  return 0;
}


/*💚💚💚 ITS A SLOW PROCESS BUT QUITING WONT SPEED IT UP 💚💚💚*/

#include <bits/stdc++.h>
#include <cctype>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstring>
using namespace std;

/*-------------define----------------------------*/
#define ff first
#define ss second
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int>
#define pqs priority_queue<int, vi, greater<int>>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define mod 1000000007
#define inf 1e18
#define ceilval(a, b) (a + b - 1) / b
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n];
#define cf(x)                                                                  \\
  ll x;                                                                        \\
  cin >> x;                                                                    \\
  while (x--)

/*---------------bak****i end-----------------------*/

void zaroorat() {
  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
}
typedef pair<int, int> pairs;

int main()

{
  zaroorat();

  ll n;
  cin >> n;
  set<pair<pairs, int>> s;

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

      ll divd = i;
      ll div = j;
      ll rem = n - i * j;
      if (rem > 0) {
        pair<int, int> x = make_pair(divd, div);
        pair<int, int> y = make_pair(div, divd);
        pair<pair<int, int>, int> one = make_pair(x, rem);
        pair<pair<int, int>, int> sec = make_pair(y, rem);
        s.insert(one);
        s.insert(sec);
      }
    }
  }
  cout << s.size() << endl;

  return 0;
}

/*💚💚💚 ITS A SLOW PROCESS BUT QUITING WONT SPEED IT UP 💚💚💚*/

#include <bits/stdc++.h>
#include <cctype>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstring>
using namespace std;

/*-------------define----------------------------*/
#define ff first
#define ss second
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int>
#define pqs priority_queue<int, vi, greater<int>>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define mod 1000000007
#define inf 1e18
#define ceilval(a, b) (a + b - 1) / b
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n];
#define cf(x)                                                                  \\
  ll x;                                                                        \\
  cin >> x;                                                                    \\
  while (x--)

/*---------------bak****i end-----------------------*/

void zaroorat() {
  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
}
typedef pair<int, int> pairs;

int main()

{
  zaroorat();

  ll n;
  cin >> n;
  ll cnt = 0;
  for (int i = 1; i < n; i++) {
    if (n % i == 0) {
      cnt += n / i - 1;
    } else {
      cnt += n / i;
    }
  }
  cout << cnt << endl;

  return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main() {
  int n;
  cin >> n;
  long long int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    int x = n - i, factors = 0;
    for (int j = 1; j <= x; j++)
      if (x % j == 0)
        factors++;
    ans += factors;
  }
  cout << ans;
  return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main() {
  int n;
  cin >> n;
  long long int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    int x = n - i, factors = 0;
    for (int j = 1; j <= sqrt(x); j++)
      if (x % j == 0)
        factors++;
    long double sr = sqrt(x);
    if (sr - floor(sr) == 0)
      ans += (factors - 1) * 2 + 1;
    else
      ans += factors * 2;
  }
  cout << ans;
  return 0;
}


///   BISMILLAHIR RAHMANIR RAHEEM
///   ALLAH IS WATCHING ME
///   ALLAH save us from COVID-19.Amin.

///   Every soul shall taste death.

///   Tag ::

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
#include <ext/pb_ds/tree_policy.hpp>

///  order_of_key return number of elements less than x.
///  find_by_order return index.
using namespace std;
using namespace __gnu_pbds;

#define MOHAMMAD                                                               \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);
#define all(x) (x).begin(), (x).end()
#define AE cout << fixed << setprecision(2);

/// faster.
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

int dx8[] = {0, 0, 1, 1, 1, -1, -1, -1}; // 8-direction.......
int dy8[] = {1, -1, 1, -1, 0, 0, -1, 1};
int dx4[] = {1, -1, 0, 0}; // 4-direction...........
int dy4[] = {0, 0, 1, -1};

using ll = long long;
const ll MOD = 1e9 + 7;

typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;
typedef tree<pair<int, int>, null_type, less<pair<int, int>>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_multiset;

// debug
template <typename F, typename S>
ostream &operator<<(ostream &os, const pair<F, S> &p) {
  return os << "(" << p.first << ", " << p.second << ")";
}
template <typename T> ostream &operator<<(ostream &os, const vector<T> &v) {
  os << "{";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ", ";
    os << *it;
  }
  return os << "}";
}
template <typename T> ostream &operator<<(ostream &os, const set<T> &v) {
  os << "[";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ",";
    os << *it;
  }
  return os << "]";
}
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &v) {
  os << "[";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ", ";
    os << *it;
  }
  return os << "]";
}
template <typename F, typename S>
ostream &operator<<(ostream &os, const map<F, S> &v) {
  os << "[";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ", ";
    os << it->first << " = " << it->second;
  }
  return os << "]";
}
#define dbg(args...)                                                           \\
  do {                                                                         \\
    cerr << #args << " : ";                                                    \\
    faltu(args);                                                               \\
  } while (0)
void faltu() { cerr << endl; }
template <typename T> void faltu(T a[], int n) {
  for (int i = 0; i < n; ++i)
    cerr << a[i] << ' ';
  cerr << endl;
}
template <typename T, typename... hello>
void faltu(T arg, const hello &...rest) {
  cerr << arg << ' ';
  faltu(rest...);
}
// #else
// #define dbg(args...)

/// Modular arithmetic
inline void normal(ll &a) {
  a %= MOD;
  (a < 0) && (a += MOD);
}
inline ll modMul(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a * b) % MOD;
}
inline ll modAdd(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a + b) % MOD;
}
inline ll modSub(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  a -= b;
  normal(a);
  return a;
}
inline ll modPow(ll b, ll p) {
  ll r = 1;
  while (p) {
    if (p & 1)
      r = modMul(r, b);
    b = modMul(b, b);
    p >>= 1;
  }
  return r;
}
inline ll modInverse(ll a) { return modPow(a, MOD - 2); } /// When MOD is prime.
inline ll modDiv(ll a, ll b) { return modMul(a, modInverse(b)); }

//***********************************************  The END
//**********************************************************************************************************************************
const ll N = 1e5;
const ll INF = 1e18;
const ll limit = (1LL << 64) - 1;

int main() {

  MOHAMMAD

  ll n;
  cin >> n;
  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) {
        if (x / j == j)
          ans++;
        else
          ans += 2;
      }
    }
  }

  cout << ans;
}

/*
Explanation:

----------------------------------------------------------------------------------------------------------------

  Alhamdulillah
*/

///   BISMILLAHIR RAHMANIR RAHEEM
///   ALLAH IS WATCHING ME
///   ALLAH save us from COVID-19.Amin.

///   Every soul shall taste death.

///   Tag ::

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
#include <ext/pb_ds/tree_policy.hpp>

///  order_of_key return number of elements less than x.
///  find_by_order return index.
using namespace std;
using namespace __gnu_pbds;

#define MOHAMMAD                                                               \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);
#define all(x) (x).begin(), (x).end()
#define AE cout << fixed << setprecision(2);

/// faster.
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

int dx8[] = {0, 0, 1, 1, 1, -1, -1, -1}; // 8-direction.......
int dy8[] = {1, -1, 1, -1, 0, 0, -1, 1};
int dx4[] = {1, -1, 0, 0}; // 4-direction...........
int dy4[] = {0, 0, 1, -1};

using ll = long long;
const ll MOD = 1e9 + 7;

typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;
typedef tree<pair<int, int>, null_type, less<pair<int, int>>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_multiset;

// debug
template <typename F, typename S>
ostream &operator<<(ostream &os, const pair<F, S> &p) {
  return os << "(" << p.first << ", " << p.second << ")";
}
template <typename T> ostream &operator<<(ostream &os, const vector<T> &v) {
  os << "{";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ", ";
    os << *it;
  }
  return os << "}";
}
template <typename T> ostream &operator<<(ostream &os, const set<T> &v) {
  os << "[";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ",";
    os << *it;
  }
  return os << "]";
}
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &v) {
  os << "[";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ", ";
    os << *it;
  }
  return os << "]";
}
template <typename F, typename S>
ostream &operator<<(ostream &os, const map<F, S> &v) {
  os << "[";
  for (auto it = v.begin(); it != v.end(); ++it) {
    if (it != v.begin())
      os << ", ";
    os << it->first << " = " << it->second;
  }
  return os << "]";
}
#define dbg(args...)                                                           \\
  do {                                                                         \\
    cerr << #args << " : ";                                                    \\
    faltu(args);                                                               \\
  } while (0)
void faltu() { cerr << endl; }
template <typename T> void faltu(T a[], int n) {
  for (int i = 0; i < n; ++i)
    cerr << a[i] << ' ';
  cerr << endl;
}
template <typename T, typename... hello>
void faltu(T arg, const hello &...rest) {
  cerr << arg << ' ';
  faltu(rest...);
}
// #else
// #define dbg(args...)

/// Modular arithmetic
inline void normal(ll &a) {
  a %= MOD;
  (a < 0) && (a += MOD);
}
inline ll modMul(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a * b) % MOD;
}
inline ll modAdd(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a + b) % MOD;
}
inline ll modSub(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  a -= b;
  normal(a);
  return a;
}
inline ll modPow(ll b, ll p) {
  ll r = 1;
  while (p) {
    if (p & 1)
      r = modMul(r, b);
    b = modMul(b, b);
    p >>= 1;
  }
  return r;
}
inline ll modInverse(ll a) { return modPow(a, MOD - 2); } /// When MOD is prime.
inline ll modDiv(ll a, ll b) { return modMul(a, modInverse(b)); }

//***********************************************  The END
//**********************************************************************************************************************************
const ll N = 1e6;
const ll INF = 1e18;
const ll limit = (1LL << 64) - 1;

bitset<N + 1> bs;
vector<ll> primes;

void sieve() {

  bs.set();
  bs[0] = bs[1] = 0;
  for (ll i = 2; i <= N; ++i) {
    if (bs[i]) {
      primes.push_back(i);
      for (ll j = i * i; j <= N; j += i)
        bs[j] = 0;
    }
  }
}

int main() {

  MOHAMMAD
  sieve();
  ll n;
  cin >> n;
  ll ans = 0;
  for (ll i = 1; i < n; ++i) {
    ll x = n - i;
    ll div = 1;
    for (auto p : primes) {
      // dbg ( p );
      ll freq = 1;
      if (p * p > x)
        break;
      if (x % p == 0) {
        while (x % p == 0) {
          x /= p;
          freq++;
        }
      }
      div *= freq;
    }

    // dbg ( i , x, div );
    if (x > 1) {
      div *= 2;
    }

    ans += div;
  }

  cout << ans;
}

/*
Explanation:

----------------------------------------------------------------------------------------------------------------

  Alhamdulillah
*/


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define s(x, n) memset(x, n, sizeof(x));
#define pb(x) push_back(x)
#define NIL -1
#define MAXN 11

void solve() {
  ll n;
  cin >> n;
  ll ans = 0;
  for (ll i = 1; i <= n - 1; i++) {
    // cout << ""
    for (ll j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        // cout << i << " " << j << "\\n";
        if (i / j == j)
          ans++;
        else
          ans += 2;
      }
    }
    // cout << "i= " << i << " " << ans << "\\n";
  }
  cout << ans << "\\n";
}
int main() {
#ifdef WIN32
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif

#ifndef WIN32
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
#endif
  int t;
  t = 1;
  /// cin >> t;
  for (int I = 1; I <= t; I++) {
    solve();
  }
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define s(x, n) memset(x, n, sizeof(x));
#define pb(x) push_back(x)
#define NIL -1
#define MAXN 11

void solve() {
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    // cout << ""
    for (int j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        // cout << i << " " << j << "\\n";
        if (i / j == j)
          ans++;
        else
          ans += 2;
      }
    }
    // cout << "i= " << i << " " << ans << "\\n";
  }
  cout << ans << "\\n";
}
int main() {
#ifdef WIN32
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif

#ifndef WIN32
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
#endif
  int t;
  t = 1;
  /// cin >> t;
  for (int I = 1; I <= t; I++) {
    solve();
  }
  return 0;
}


#include <bits/stdc++.h>
#define int long long
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define re(x) cout << (#x) << " is " << (x) << "\\n";
#define gif(a, b) ((a) / (b) + ((a) % (b) ? 1 : 0))
using namespace std;

int fun(int n) {
  int ans = 0;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0) {
      ans++;
      if (n / i != i)
        ans++;
    }
  }
  return ans;
}
int32_t main() {
  IOS int T = 1;
  // cin >> T;
  for (int t = 0; t < T; ++t) {
    int n;
    cin >> n;
    int ans = 0;
    for (int i = 1; i <= n - 1; ++i)
      ans += fun(i);
    cout << ans;
  }
  return 0;
}
// if not working? go ahead.

#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; ++i)
    ans += (n - 1) / i;
  cout << ans;
}


#include <cmath>
#include <cstring>
#include <iostream>

using namespace std;

int divisors[1000001];

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

  int original = n;
  int divisor = 2;
  int divisorCount = 1;

  while (n > 1) {
    if (n % divisor == 0) {
      n /= divisor;
      divisors[divisor]++;
    } else
      divisor++;
  }

  for (int i = 2; i <= original; i++) {
    divisorCount *= divisors[i] + 1;
  }

  return divisorCount;
}

int main() {
  int n;
  int tupleCount = 0;

  cin >> n;

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

    memset(divisors, 0, sizeof(divisors));
  }

  cout << tupleCount << endl;

  return 0;
}

#include <cmath>
#include <iostream>

using namespace std;

int main() {
  int n;
  int tupleCount = 0;

  cin >> n;

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

  cout << tupleCount << endl;

  return 0;
}


#include <bits/stdc++.h>
#define forna(i, a, n) for (int i = a; i < n; i++)
typedef long long int lli;
#define MOD 1000000007
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  lli t, n, m, tot;
  string s;
  lli maxi[1000000];
  maxi[1] = 1;
  forna(i, 2, 1000000) {
    tot = 0;
    for (int j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        if (j * j != i)
          tot += 2;
        else
          tot++;
      }
    }
    maxi[i] = maxi[i - 1] + tot;
  }
  cin >> n;
  cout << maxi[n - 1];
}

#include <bits/stdc++.h>
#define forna(i, a, n) for (int i = a; i < n; i++)
typedef long long int lli;
#define MOD 1000000007
using namespace std;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  lli t, n, m, tot = 0;
  string s;
  cin >> n;
  forna(i, 1, n + 1) {
    forna(j, 1, n + 1) {
      if (i * j > n - 1)
        break;
      tot++;
    }
  }
  cout << tot << endl;
}


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

int main() {
  long long int a, b, c;
  long long int N;
  long long int count = 0;
  cin >> N;
  for (long long int i = 1; i < N; i++) {
    for (long long int k = N; k >= 1; k--) {
      a = i;
      b = k;
      if (a * b < N) {
        count++;
      }
    }
  }
  cout << count << endl;
}

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

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


#include <bits/stdc++.h>
#define FAST                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(nullptr);
#define ll long long int
#define f(i, a, b) for (int i = a; i < b; i++)
#define fr(i, a, b) for (int i = a; i >= b; i--)
#define l long int
#define endl '\\n'
#define pb push_back
#define pf pop.front()
using namespace std;

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

int32_t main() {
  FAST l T = 1;

  while (T--) {
    solve();
  }
}

#include <bits/stdc++.h>
#define FAST                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(nullptr);
#define ll long long int
#define f(i, a, b) for (int i = a; i < b; i++)
#define fr(i, a, b) for (int i = a; i >= b; i--)
#define l long int
#define endl '\\n'
#define pb push_back
#define pf pop.front()
using namespace std;

long int divisor[1000001];

void solve() {
  l n;

  cin >> n;
  for (l i = 1; i < n; i++) {
    for (l j = i; j <= n; j += i) {
      divisor[j]++;
    }
  }

  ll ans = 0;

  for (l i = 1; i < n; i++)
    ans += divisor[n - i];

  cout << ans << endl;
}

int32_t main() {
  FAST l T = 1;

  while (T--) {
    solve();
  }
}


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

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

#define F first
#define S second
#define ALL(a) a.begin(), a.end()
#define mp make_pair
#define pb push_back
#define FOR(i, a, b) for (int i = a; i < b; i++)
#define FORN(i, a, b) for (int i = a; i <= b; i++)
#define FORB(i, a, b) for (int i = a; i >= b; i--)
#define INT_MAXI 2147483647
#define INT_MINI -2147483648
#define REV(a) reverse(a.begin(), a.end())
#define NP(a) next_permutation(a.begin(), a.end())

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;

bool prime[1000001];

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  // cout<<"input"<<endl;freopen("input.txt","r",stdin);
  // cout<<"output"<<endl;freopen("output.txt","w",stdout);

  prime[1] = true;
  for (int i = 2; i <= 1000000; i++)
    if (prime[i] == false) {
      for (int j = i + i; j <= 1000000; j += i)
        prime[j] = true;
    }
  ll n;
  cin >> n;

  ll sum = 0;
  for (ll i = n - 1; i >= 1; i--) {
    if (!prime[i]) {
      sum += 2;
      continue;
    }
    ll akhir = sqrt(i);

    for (ll j = 1; j <= akhir; j++)
      if (i % j == 0) {
        if (i / j == j)
          sum += 1;
        else
          sum += 2;
      }
  }
  cout << sum << endl;

  return 0;
}

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

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

#define F first
#define S second
#define ALL(a) a.begin(), a.end()
#define mp make_pair
#define pb push_back
#define FOR(i, a, b) for (int i = a; i < b; i++)
#define FORN(i, a, b) for (int i = a; i <= b; i++)
#define FORB(i, a, b) for (int i = a; i >= b; i--)
#define INT_MAXI 2147483647
#define INT_MINI -2147483648
#define REV(a) reverse(a.begin(), a.end())
#define NP(a) next_permutation(a.begin(), a.end())

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  // cout<<"input"<<endl;freopen("input.txt","r",stdin);
  // cout<<"output"<<endl;freopen("output.txt","w",stdout);

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

  return 0;
}


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

#define fast()                                                                 \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define ll long long int
#define test()                                                                 \\
  ll t;                                                                        \\
  cin >> t;                                                                    \\
  while (t--)
#define lp0(i, begin, end) for (ll i = begin; i < end; i++)
#define lp1(i, begin, end) for (ll i = begin; i <= end; i++)
#define rlp(i, begin, end) for (ll i = end; i >= begin; i--)
#define prec(n) fixed << setprecision(n)
#define initial(a, i) memset(a, i, sizeof(a))
#define pb push_back
#define PI 3.1415926535897932384626433832795
#define MOD 1000000007
#define F first
#define S second
#define all(a) (a).begin(), (a).end()
#define BPC(x) __builtin_popcountll(x)
#define gcd(a, b) __gcd(a, b)

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

ll power(ll x, ll n) {
  ll result = 1;
  while (n) {
    if (n & 1)
      result = result * x;
    n = n / 2;
    x = x * x;
  }
  return result;
}

ll countWays(ll n) {
  // To store count of such pairs
  ll count = 0;
  ll cnt1 = 0;

  // Counting number of pairs
  // upto sqrt(n) - 1
  for (ll i = 1; i * i <= n; i++) {
    if (n % i == 0 && ((n / i) == i)) {
      cnt1++;
    } else if (n % i == 0)
      count++;
  }
  // To return count of pairs
  // cout<<n <<" "<<count<<"\\n";
  return (count * 2 + cnt1);
}

// Solution Function
void solution() {
  // cout<<compte<<"\\n";
  ll n;
  cin >> n;

  ll cnt = 1;

  for (ll i = 2; i < n; i++) {
    ll divi = countWays(i);
    cnt += divi;
  }
  cout << cnt << "\\n";
}
// Driver Function
int main() {
  ll compte = 1;
  // test()
  //{
  solution();
  compte++;
  //}
  return 0;
}

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

#define fast()                                                                 \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define ll long long int
#define test()                                                                 \\
  ll t;                                                                        \\
  cin >> t;                                                                    \\
  while (t--)
#define lp0(i, begin, end) for (ll i = begin; i < end; i++)
#define lp1(i, begin, end) for (ll i = begin; i <= end; i++)
#define rlp(i, begin, end) for (ll i = end; i >= begin; i--)
#define prec(n) fixed << setprecision(n)
#define initial(a, i) memset(a, i, sizeof(a))
#define pb push_back
#define PI 3.1415926535897932384626433832795
#define MOD 1000000007
#define F first
#define S second
#define all(a) (a).begin(), (a).end()
#define BPC(x) __builtin_popcountll(x)
#define gcd(a, b) __gcd(a, b)

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

ll power(ll x, ll n) {
  ll result = 1;
  while (n) {
    if (n & 1)
      result = result * x;
    n = n / 2;
    x = x * x;
  }
  return result;
}

// Solution Function
void solution() {
  // cout<<compte<<"\\n";
  ll n;
  cin >> n;

  ll cnt = 1;

  ll ans = 0;
  for (ll i = 1; i <= n; i++) {
    bool c = false;
    for (ll j = 1; j <= n; j++) {
      if (i * j < n) {
        c = true;
        ans++;
      } else
        break;
    }
    if (c == false)
      break;
  }
  cout << ans;
}
// Driver Function
int main() {
  ll compte = 1;
  // test()
  //{
  solution();
  compte++;
  //}
  return 0;
}


#include <bits/stdc++.h>
#include <iostream>
#include <iterator>
#include <map>
#include <math.h>
#include <set>
#include <string>
#include <vector>
#define ll long long int
#define ull unsigned long long int
#define pb push_back
#define mp make_pair
#include <algorithm>
#include <cmath>
using namespace std;
pair<ll, ll> norm(ll a, ll b) {
  if (a < 0) {
    a *= -1;
    b *= -1;
  } else if ((a == 0) && (b < 0)) {
    b *= -1;
  }
  ll d = __gcd(abs(a), abs(b));
  a = (ll)(a / d);
  b = (ll)(b / d);
  pair<ll, ll> p = mp(a, b);
  return p;
}
bool decreasing(pair<ll, ll> a, pair<ll, ll> b) {
  if (a.first > b.first)
    return true;
  else if (a.first == b.first) {
    if (a.second < b.second)
      return false;
    else
      return true;
  } else
    return false;
}
ll expo(ll x, ll y) {
  ll res = 1;
  while (y > 0) {
    if (y & 1)
      res = (res * x) % 1000000007;
    y = y >> 1;
    x = (x * x) % 1000000007;
  }
  return res;
}
int main() {
  // ios_base::sync_with_stdio(false);
  // cin.tie(NULL);
  // int T,p;
  // cin>>T;
  // for(p=1;p<=T;p++)
  // {
  ll N;
  cin >> N;
  ll i, j, k, a, b, c;
  ll count = 0;
  for (i = 1; i < N; i++) {
    a = N - i;
    for (j = 1; j * j <= a; j++) {
      if (a % j == 0) {
        k = a / j;
        if (k == j)
          count++;
        else
          count += 2;
      }
    }
  }
  cout << count;
  return 0;
}

#include <bits/stdc++.h>
#include <iostream>
#include <iterator>
#include <map>
#include <math.h>
#include <set>
#include <string>
#include <vector>
#define ll long long int
#define ull unsigned long long int
#define pb push_back
#define mp make_pair
#include <algorithm>
#include <cmath>
using namespace std;
pair<ll, ll> norm(ll a, ll b) {
  if (a < 0) {
    a *= -1;
    b *= -1;
  } else if ((a == 0) && (b < 0)) {
    b *= -1;
  }
  ll d = __gcd(abs(a), abs(b));
  a = (ll)(a / d);
  b = (ll)(b / d);
  pair<ll, ll> p = mp(a, b);
  return p;
}
bool decreasing(pair<ll, ll> a, pair<ll, ll> b) {
  if (a.first > b.first)
    return true;
  else if (a.first == b.first) {
    if (a.second < b.second)
      return false;
    else
      return true;
  } else
    return false;
}
ll expo(ll x, ll y) {
  ll res = 1;
  while (y > 0) {
    if (y & 1)
      res = (res * x) % 1000000007;
    y = y >> 1;
    x = (x * x) % 1000000007;
  }
  return res;
}
int main() {
  // ios_base::sync_with_stdio(false);
  // cin.tie(NULL);
  // int T,p;
  // cin>>T;
  // for(p=1;p<=T;p++)
  // {
  ll N;
  cin >> N;
  ll i, j, k, a, b, c;
  ll count = 0;
  for (i = 1; i < N; i++) {
    a = N - 1;
    b = (ll)(a / i);
    count += b;
  }
  cout << count;
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
using str = string;
using ll = long long;
#define REP(i, n) for (int i = 0; i < int(n); i++)
#define RREP(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define FOR(i, f, t) for (int i = int(f); i <= int(t); i++)
#define RFOR(i, f, t) for (int i = int(f); i >= int(t); i--)
#define ALL(vec) (vec).begin(), (vec).end()
#define ASORT(vec) sort(ALL(vec))
#define DSORT(vec) sort(ALL(vec), greater<int>());
#define MAX(x) *max_element(ALL(x))
#define MIN(x) *min_element(ALL(x))
#define YES(ans)                                                               \\
  if (ans)                                                                     \\
    cout << "YES" << endl;                                                     \\
  else                                                                         \\
    cout << "NO" << endl;
#define Yes(ans)                                                               \\
  if (ans)                                                                     \\
    cout << "Yes" << endl;                                                     \\
  else                                                                         \\
    cout << "No" << endl;
#define yes(ans)                                                               \\
  if (ans)                                                                     \\
    cout << "yes" << endl;                                                     \\
  else                                                                         \\
    cout << "no" << endl;

ll count(ll n) {
  vector<ll> data;
  for (ll i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      data.push_back(i);
      if (n / i != i)
        data.push_back(n / i);
    }
  }
  return data.size();
}

int main() {
  int n, ans = 0;
  cin >> n;
  FOR(i, 1, n - 1) ans += count(i);
  cout << ans << endl;
}

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define FOR(i, f, t) for (int i = int(f); i <= int(t); i++)

int count(int n) {
  vector<int> data;
  for (int i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      data.push_back(i);
      if (n / i != i)
        data.push_back(n / i);
    }
  }
  return data.size();
}

int main() {
  int n, ans = 0;
  cin >> n;
  vector<int> data(n);
  FOR(i, 1, n - 1) data.at(i - 1) = count(i);
  FOR(i, 1, n - 1) ans += data.at(i - 1);
  cout << ans << endl;
}


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

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

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

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


#include <bits/stdc++.h>

using namespace std;
#define rep(i, n) for (int i = 0; i < n; i++)
typedef long long ll;
typedef map<string, int> msi;
typedef pair<int, int> PII;

int main() {
  int n;
  cin >> n;
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    for (int j = 1; j <= pow(n - i, 0.5); j++) {
      if ((n - i) % j == 0) {
        if ((double)j != pow(n - i, 0.5))
          ans += 2;
        else
          ans++;
      }
    }
  }
  cout << ans << endl;
  return 0;
}

#include <bits/stdc++.h>

using namespace std;
#define rep(i, n) for (int i = 0; i < n; i++)
typedef long long ll;
typedef map<string, int> msi;
typedef pair<int, int> PII;

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


//"BISMILLAHIR RAHMANIR RAHIM"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
const long long M = 1e9 + 7;
ll fact(ll x, ll y) {
  ll f = 1, i = 1;
  while (i <= y) {
    f = ((f % M) * (x % M)) % M;
    i++;
  }
  return f;
}
int main() {
  ll n, i, cnt = 0, x, y, j;
  cin >> n;
  for (i = 1; i < n; i++) {
    x = n - i;
    for (j = 1; j * j < x; j++) {
      if (x % j == 0)
        cnt += 2;
    }
    y = sqrt(x);
    if (y * y == x)
      cnt++;
  }
  cout << cnt << endl;
  return 0;
}

//"BISMILLAHIR RAHMANIR RAHIM"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
const long long M = 1e9 + 7;
ll fact(ll x, ll y) {
  ll f = 1, i = 1;
  while (i <= y) {
    f = ((f % M) * (x % M)) % M;
    i++;
  }
  return f;
}
int main() {
  ll n, i, cnt = 0, x, y, j;
  cin >> n;
  for (i = 1; i < n; i++) {
    for (j = 1; i * j < n; j++)
      cnt++;
  }
  cout << cnt << endl;
  return 0;
}


#include <algorithm>
#include <atomic>
#include <bitset>
#include <chrono>
#include <condition_variable>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <string_view>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

static int my_speed_up = []() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  return 0;
}();
using ll = long long;
using ull = unsigned long long;
template <class T> using v = vector<T>;
template <class T> using vv = vector<vector<T>>;
template <class T> using vvv = vector<vector<vector<T>>>;
template <class T> using vvvv = vector<vector<vector<vector<T>>>>;
template <class T1, class T2> using um = unordered_map<T1, T2>;
template <class T> using us = unordered_set<T>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
#define print_line cout << "[" << setw(3) << __LINE__ << "]  ";
#define for_b(i, b) for (int i = 0; i < (b); ++i)
#define for_ab(i, a, b) for (int i = a; i < (b); ++i)
#define what_is(x)                                                             \\
  { print_line cout << #x << " = " << x << endl; }
template <class T, class... Ts>
void what_are_2(T const &arg, Ts const &...args) {
  cout << arg;
  if constexpr (sizeof...(args) > 0) {
    cout << ", ";
    what_are_2(args...);
  }
}
#define what_are(...)                                                          \\
  {                                                                            \\
    print_line what_are_2(__VA_ARGS__);                                        \\
    cout << endl;                                                              \\
  }
#define hit                                                                    \\
  { print_line cout << "hit!" << endl; }
#define pad(x) for_b(i, x) cout << "  ";
#define show_1d(___x)                                                          \\
  {                                                                            \\
    print_line cout << #___x << " = ";                                         \\
    for (auto ___num : ___x)                                                   \\
      cout << ___num << ", ";                                                  \\
    cout << endl;                                                              \\
  }
#define show_2d(___x)                                                          \\
  {                                                                            \\
    print_line cout << #___x << endl;                                          \\
    for (auto ___row : ___x) {                                                 \\
      for (auto ___num : ___row)                                               \\
        cout << ___num << ", ";                                                \\
      cout << endl;                                                            \\
    }                                                                          \\
  }
#define show_3d(___x)                                                          \\
  {                                                                            \\
    print_line cout << #___x << endl;                                          \\
    for (auto ___row : ___x) {                                                 \\
      for (auto ___row2 : ___row) {                                            \\
        for (auto ___num : ___row2)                                            \\
          cout << ___num << ", ";                                              \\
        cout << endl;                                                          \\
      }                                                                        \\
      cout << endl;                                                            \\
    }                                                                          \\
  }

vv<int> d4 = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
vv<int> d8 = {{1, 0}, {-1, 0}, {0, 1},  {0, -1},
              {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
bool is_valid_pos(size_t w, size_t h, int x, int y) {
  return x >= 0 && x < static_cast<int>(w) && y >= 0 && y < static_cast<int>(h);
}

// ⣿⣿⣟⣽⣿⣿⣿⣿⣟⣵⣿⣿⣿⡿⣳⣫⣾⣿⣿⠟⠻⣿⣿⣿⢻⣿⣿⣿⣿⣷⡽⣿
// ⣿⣟⣾⡿⣿⣿⢟⣽⣿⣿⣿⣿⣫⡾⣵⣿⣿⣿⠃⠄⠄⠘⢿⣿⣾⣿⣿⣿⢿⣿⣿⡜
// ⡿⣼⡟⣾⣿⢫⣿⣿⣿⣿⡿⣳⣿⣱⣿⣿⣿⡋⠄⠄⠄⠄⠄⠛⠛⠋⠁⠄⠄⣿⢸⣿
// ⢳⣟⣼⡿⣳⣿⣿⣿⣿⡿⣹⡿⣃⣿⣿⣿⢳⠁⠄⠄⠄⢀⣀⠄⠄⠄⠄⠄⢀⣿⢿⣿
// ⡟⣼⣿⣱⣿⡿⣿⣿⣿⢡⣫⣾⢸⢿⣿⡟⣿⣶⡶⢰⣿⣿⣿⢷⠄⠄⠄⠄⢼⣿⣸⣿
// ⣽⣿⢣⣿⡟⣽⣿⣿⠃⣲⣿⣿⣸⣷⡻⡇⣿⣿⢇⣿⣿⣿⣏⣎⣸⣦⣠⡞⣾⢧⣿⣿
// ⣿⡏⣿⡿⢰⣿⣿⡏⣼⣿⣿⡏⠙⣿⣿⣤⡿⣿⢸⣿⣿⢟⡞⣰⣿⣿⡟⣹⢯⣿⣿⣿
// ⡿⢹⣿⠇⣿⣿⣿⣸⣿⣿⣿⣿⣦⡈⠻⣿⣿⣮⣿⣿⣯⣏⣼⣿⠿⠏⣰⡅⢸⣿⣿⣿
// ⡀⣼⣿⢰⣿⣿⣇⣿⣿⡿⠛⠛⠛⠛⠄⣘⣿⣿⣿⣿⣿⣿⣶⣿⠿⠛⢾⡇⢸⣿⣿⣿
// ⠄⣿⡟⢸⣿⣿⢻⣿⣿⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡋⠉⣠⣴⣾⣿⡇⣸⣿⣿⡏
// ⠄⣿⡇⢸⣿⣿⢸⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠘⢿⣿⠏⠄⣿⣿⣿⣹
// ⠄⢻⡇⢸⣿⣿⠸⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣦⣼⠃⠄⢰⣿⣿⢯⣿
// ⠄⢸⣿⢸⣿⣿⡄⠙⢿⣿⣿⡿⠁⠄⠄⠄⠄⠉⣿⣿⣿⣿⣿⣿⡏⠄⢀⣾⣿⢯⣿⣿
// ⣾⣸⣿⠄⣿⣿⡇⠄⠄⠙⢿⣀⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⠟⠄⠄⣼⡿⢫⣻⣿⣿
// ⣿⣿⣿⠄⢸⣿⣿⠄⠄⠄⠄⠙⠿⣷⣶⣤⣴⣿⠿⠿⠛⠉⠄⠄ ⢸⣿⣿⣿⣿⠃⠄⢀⣴

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

  int res = 0;
  for_ab(i, 1, N) {
    int sqrti = sqrt(i) + 1;
    for_ab(j, 1, sqrti) {
      if ((i % j) == 0) {
        if (j * j != i)
          res += 2;
        else
          ++res;
      }
    }
  }

  cout << res << endl;

  return 0;
}

#include <algorithm>
#include <atomic>
#include <bitset>
#include <chrono>
#include <condition_variable>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <string_view>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

static int my_speed_up = []() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  return 0;
}();
using ll = long long;
using ull = unsigned long long;
template <class T> using v = vector<T>;
template <class T> using vv = vector<vector<T>>;
template <class T> using vvv = vector<vector<vector<T>>>;
template <class T> using vvvv = vector<vector<vector<vector<T>>>>;
template <class T1, class T2> using um = unordered_map<T1, T2>;
template <class T> using us = unordered_set<T>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
#define print_line cout << "[" << setw(3) << __LINE__ << "]  ";
#define for_b(i, b) for (int i = 0; i < (b); ++i)
#define for_ab(i, a, b) for (int i = a; i < (b); ++i)
#define what_is(x)                                                             \\
  { print_line cout << #x << " = " << x << endl; }
template <class T, class... Ts>
void what_are_2(T const &arg, Ts const &...args) {
  cout << arg;
  if constexpr (sizeof...(args) > 0) {
    cout << ", ";
    what_are_2(args...);
  }
}
#define what_are(...)                                                          \\
  {                                                                            \\
    print_line what_are_2(__VA_ARGS__);                                        \\
    cout << endl;                                                              \\
  }
#define hit                                                                    \\
  { print_line cout << "hit!" << endl; }
#define pad(x) for_b(i, x) cout << "  ";
#define show_1d(___x)                                                          \\
  {                                                                            \\
    print_line cout << #___x << " = ";                                         \\
    for (auto ___num : ___x)                                                   \\
      cout << ___num << ", ";                                                  \\
    cout << endl;                                                              \\
  }
#define show_2d(___x)                                                          \\
  {                                                                            \\
    print_line cout << #___x << endl;                                          \\
    for (auto ___row : ___x) {                                                 \\
      for (auto ___num : ___row)                                               \\
        cout << ___num << ", ";                                                \\
      cout << endl;                                                            \\
    }                                                                          \\
  }
#define show_3d(___x)                                                          \\
  {                                                                            \\
    print_line cout << #___x << endl;                                          \\
    for (auto ___row : ___x) {                                                 \\
      for (auto ___row2 : ___row) {                                            \\
        for (auto ___num : ___row2)                                            \\
          cout << ___num << ", ";                                              \\
        cout << endl;                                                          \\
      }                                                                        \\
      cout << endl;                                                            \\
    }                                                                          \\
  }

vv<int> d4 = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
vv<int> d8 = {{1, 0}, {-1, 0}, {0, 1},  {0, -1},
              {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
bool is_valid_pos(size_t w, size_t h, int x, int y) {
  return x >= 0 && x < static_cast<int>(w) && y >= 0 && y < static_cast<int>(h);
}

// ⣿⣿⣟⣽⣿⣿⣿⣿⣟⣵⣿⣿⣿⡿⣳⣫⣾⣿⣿⠟⠻⣿⣿⣿⢻⣿⣿⣿⣿⣷⡽⣿
// ⣿⣟⣾⡿⣿⣿⢟⣽⣿⣿⣿⣿⣫⡾⣵⣿⣿⣿⠃⠄⠄⠘⢿⣿⣾⣿⣿⣿⢿⣿⣿⡜
// ⡿⣼⡟⣾⣿⢫⣿⣿⣿⣿⡿⣳⣿⣱⣿⣿⣿⡋⠄⠄⠄⠄⠄⠛⠛⠋⠁⠄⠄⣿⢸⣿
// ⢳⣟⣼⡿⣳⣿⣿⣿⣿⡿⣹⡿⣃⣿⣿⣿⢳⠁⠄⠄⠄⢀⣀⠄⠄⠄⠄⠄⢀⣿⢿⣿
// ⡟⣼⣿⣱⣿⡿⣿⣿⣿⢡⣫⣾⢸⢿⣿⡟⣿⣶⡶⢰⣿⣿⣿⢷⠄⠄⠄⠄⢼⣿⣸⣿
// ⣽⣿⢣⣿⡟⣽⣿⣿⠃⣲⣿⣿⣸⣷⡻⡇⣿⣿⢇⣿⣿⣿⣏⣎⣸⣦⣠⡞⣾⢧⣿⣿
// ⣿⡏⣿⡿⢰⣿⣿⡏⣼⣿⣿⡏⠙⣿⣿⣤⡿⣿⢸⣿⣿⢟⡞⣰⣿⣿⡟⣹⢯⣿⣿⣿
// ⡿⢹⣿⠇⣿⣿⣿⣸⣿⣿⣿⣿⣦⡈⠻⣿⣿⣮⣿⣿⣯⣏⣼⣿⠿⠏⣰⡅⢸⣿⣿⣿
// ⡀⣼⣿⢰⣿⣿⣇⣿⣿⡿⠛⠛⠛⠛⠄⣘⣿⣿⣿⣿⣿⣿⣶⣿⠿⠛⢾⡇⢸⣿⣿⣿
// ⠄⣿⡟⢸⣿⣿⢻⣿⣿⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡋⠉⣠⣴⣾⣿⡇⣸⣿⣿⡏
// ⠄⣿⡇⢸⣿⣿⢸⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠘⢿⣿⠏⠄⣿⣿⣿⣹
// ⠄⢻⡇⢸⣿⣿⠸⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣦⣼⠃⠄⢰⣿⣿⢯⣿
// ⠄⢸⣿⢸⣿⣿⡄⠙⢿⣿⣿⡿⠁⠄⠄⠄⠄⠉⣿⣿⣿⣿⣿⣿⡏⠄⢀⣾⣿⢯⣿⣿
// ⣾⣸⣿⠄⣿⣿⡇⠄⠄⠙⢿⣀⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⠟⠄⠄⣼⡿⢫⣻⣿⣿
// ⣿⣿⣿⠄⢸⣿⣿⠄⠄⠄⠄⠙⠿⣷⣶⣤⣴⣿⠿⠿⠛⠉⠄⠄ ⢸⣿⣿⣿⣿⠃⠄⢀⣴

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

  v<int> tb(N, 0);

  for_ab(i, 1, tb.size()) {
    for (int j = i; j < tb.size(); j += i)
      ++tb[j];
  }
  int res = accumulate(tb.begin(), tb.end(), 0);
  cout << res << endl;

  return 0;
}


#include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <vector>
#define rep(i, n) for (int i = 0; i < (n); i++)
using namespace std;
typedef long long ll;

int main() {
  int n;
  cin >> n;
  ll ans = 0;
  for (int c = 1; c < n; c++) {
    int m = n - c;
    for (int b = 1; b * b <= m; b++) {
      if (m % b == 0) {
        if (m / b == b) {
          ans++;
        } else {
          ans += 2;
        }
      }
    }
  }
  cout << ans << endl;
}

#include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <vector>
#define rep(i, n) for (int i = 0; i < (n); i++)
using namespace std;
typedef long long ll;

vector<int> d(1000000 + 10);
void era() {
  rep(i, d.size()) { d[i] = i; }
  int n = d.size() - 1;
  for (int i = 2; i * i <= n; i++) {
    if (d[i] != i)
      continue;
    for (int j = i * 2; j <= n; j += i) {
      if (d[j] != j)
        continue;
      d[j] = i;
    }
  }
}

int main() {
  int n;
  cin >> n;
  ll ans = 0;
  era();
  for (int c = 1; c < n; c++) {
    int m = n - c;
    int tmp = 1;
    int before = 0;
    vector<int> p;
    while (m > 1) {
      if (d[m] != before) {
        p.push_back(1);
        before = d[m];
      } else {
        p[p.size() - 1]++;
      }
      m /= d[m];
    }
    rep(i, p.size()) tmp *= (p[i] + 1);
    ans += tmp;
  }
  cout << ans << endl;
}


#include <bits/stdc++.h>

using namespace std;
typedef long long int lli;
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
typedef pair<lli, lli> pii;
#define ff first
#define ss second
#define MOD 1000000007
#define pb push_back
#define EPS 1e-6
const lli MAX = 1e9 + 7;

vector<bool> isPrime(1000005, 1);

void seive(int N) {
  isPrime[0] = false;
  isPrime[1] = false;
  for (int i = 2; i * i <= N; ++i) {
    if (isPrime[i] == true) { // Mark all the multiples of i as composite
                              // numbers
      for (int j = i * i; j <= N; j += i)
        isPrime[j] = false;
    }
  }
}

lli divCount(int n) {

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

      int count = 0;
      if (n % p == 0) {
        while (n % p == 0) {
          n = n / p;
          count++;
        }
        total = total * (count + 1);
      }
    }
  }
  return total;
}

int main() {
  fast;
  int t = 1;
  while (t--) {
    lli n;
    cin >> n;
    lli cnt = 0;
    seive(n);
    for (int i = 1; i < n; i++) {
      cnt += divCount(n - i);
      // cout << cnt << " ";
    }
    cout << cnt << "\\n";
  }
  return 0;
}

#include <bits/stdc++.h>

using namespace std;
typedef long long int lli;
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
typedef pair<lli, lli> pii;
#define ff first
#define ss second
#define MOD 1000000007
#define pb push_back
#define EPS 1e-6
const lli MAX = 1e9 + 7;

bool prime[1000002];
lli a[1000002];

void SieveOfEratosthenes(lli n, bool prime[], lli a[]) {

  for (lli i = 2; i <= n; i++)
    prime[i] = true;

  prime[1] = false;

  for (lli p = 2; p * p <= n; p++) {
    if (prime[p] == true) {
      for (lli i = p * 2; i <= n; i += p)
        prime[i] = false;
    }
  }

  lli j = 0;
  for (lli p = 2; p <= n; p++) {
    if (prime[p]) {
      a[j] = p;
      j++;
    }
  }
}

lli countDivisors(lli n) {

  if (n == 1)
    return 1;

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

  // Loop for counting factors of n
  for (lli 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.
    lli 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
  int r = sqrt(n);
  double r1 = sqrt(n);
  // First case
  if (prime[n])
    ans = ans * 2;

  // Second case
  else if (r1 - floor(r1) == 0 && prime[r])
    ans = ans * 3;

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

  return ans; // Total divisors
}

int main() {
  fast;
  int t = 1;
  while (t--) {
    lli n;
    cin >> n;
    lli cnt = 0;
    SieveOfEratosthenes(n, prime, a);
    for (int i = 1; i < n; i++) {
      cnt += countDivisors(n - i);
      // cout << cnt << " ";
    }
    cout << cnt << "\\n";
  }
  return 0;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
  ll n;
  cin >> n;
  ll ans = 0;
  map<ll, ll> m;
  for (ll i = 1; i <= n; i++) {
    for (ll j = 1; j <= n; j++) {
      m[i * j]++;
    }
  }
  for (ll i = 1; i <= n; i++) {
    ans += m[n - i];
  }
  cout << ans;
}

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


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

#define ll long long int
#define li int64_t

int main() {
  int n;
  cin >> n;
  li count = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i * j < n) {
        count++;
      }
    }
  }
  cout << count;
}

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

#define ll long long int
#define li int64_t

int main() {
  int n;
  cin >> n;
  li count = n - 1;
  for (int i = 2; i < n; i++) {
    if (n % i == 0) {
      count += (n / i) - 1;
    } else {
      count += (n / i);
    }
  }
  cout << count;
}


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

int main() {
  int n;
  cin >> n;
  int count = 0;
  for (int i = 1; i < n; i++) {
    for (int j = i; j < n; j++) {
      if (i * j < n) {
        count += 2;
        if (i == j)
          count--;
      }
    }
  }
  cout << count;
  return 0;
}

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

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


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

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

  ll ans = 0;
  for (int i = 1; i < N; i++) {
    for (int j = 1; j * j <= N - i; j++) {
      if ((N - i) % j == 0)
        ans += 2;
      if (j * j == (N - i))
        ans--;
    }
  }
  cout << ans << endl;
}

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

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

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


#pragma GCC optimize("O3")
#pragma GCC target("sse4")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef pair<int, int> pi;
#define debug(x) cerr << #x << ": " << x << endl
#define debug2(x, y) debug(x), debug(y)
#define repn(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define rep(i, a) for (int i = 0; i < (int)(a); i++)
#define all(v) v.begin(), v.end()
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second
#define sq(x) ((x) * (x))

template <class T> T gcd(T a, T b) { return ((b == 0) ? a : gcd(b, a % b)); }

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  // freopen("input.in", "r", stdin);
  // freopen("output.out", "w", stdout);
  int n;
  cin >> n;
  int ans = 0;
  repn(i, 1, n) {
    for (int j = 1; sq(j) <= (n - i); j++) {
      if ((n - i) % j == 0) {
        ans += (j == (n - i) / j ? 1 : 2);
      }
    }
  }
  cout << ans << endl;
  return 0;
}
/*
Things to look out for:
        - Integer overflows
        - Array bounds
        - Special cases
Be careful!
*/

#pragma GCC optimize("O3")
#pragma GCC target("sse4")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef pair<int, int> pi;
#define debug(x) cerr << #x << ": " << x << endl
#define debug2(x, y) debug(x), debug(y)
#define repn(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define rep(i, a) for (int i = 0; i < (int)(a); i++)
#define all(v) v.begin(), v.end()
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define fi first
#define se second
#define sq(x) ((x) * (x))

template <class T> T gcd(T a, T b) { return ((b == 0) ? a : gcd(b, a % b)); }

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  // freopen("input.in", "r", stdin);
  // freopen("output.out", "w", stdout);
  ll n;
  cin >> n;
  ll ans = 0;
  repn(i, 1, n) {
    // we guess a
    ll l = 1, r = n;
    while (l < r) {
      ll mid = (l + r + 1) / 2;
      if (mid * i < n)
        l = mid;
      else
        r = mid - 1;
    }
    ans += l;
  }
  cout << ans << endl;
  return 0;
}
/*
Things to look out for:
        - Integer overflows
        - Array bounds
        - Special cases
Be careful!
*/


#include <cstdio>
long long n, ans, i, b, c, s;
long long fj(long long n) {
  int i = 1, s = 0;
  while (n > 0) {
    if (n % i == 0)
      n /= i;
    i++;
    s++;
  }
  return s;
}
int main() {
  scanf("%lld", &n);
  for (i = 1; i <= n; i++)
    s += fj(n - i);
  printf("%lld\\n", s);
  return 0;
}


#include <bits/stdc++.h>
#include <string.h>
using namespace std;
//
int main() {
  int N, a, b;
  int c = 0;
  cin >> N;
  for (int i = 0; i < N; i++) {
    a = N / i;
    b = N % i;
    if (a * i + b == N)
      c = c + 3;
    cerr << a << " " << b << " " << i << endl;
  }
  cout << c << endl;
}

#include <bits/stdc++.h>
#include <string.h>
using namespace std;
//
int main() {
  int N, a, b;
  a = 0;
  cin >> N;
  for (int i = 1; i < N; i++) {
    a = a + ((N - 1) / i);
  }
  cout << a << endl;
}