#include "bits/stdc++.h"

using namespace std;

#define ll long long int

void solve() {
  ll n, cnt = 0;
  scanf("%lld", &n);
  for (ll i = 1; i < n; i++) {
    for (ll j = 1; j < n; j++) {
      ll x = n - (i * j);
      cnt += (x > 0 && x < n);
    }
  }
  printf("%lld", cnt);
}

int main() {
  ll t = 1;
  // scanf("%lld",&t);
  while (t--)
    solve();
  return 0;
}

#include "bits/stdc++.h"

using namespace std;

#define ll long long int

void solve() {
  ll n, cnt = 0;
  scanf("%lld", &n);
  for (ll i = 1; i < n; i++) {
    for (ll j = 1; j < n; j++) {
      ll x = n - (i * j);
      if (x > 0 && x < n)
        cnt++;
      else
        break;
    }
  }
  printf("%lld", cnt);
}

int main() {
  ll t = 1;
  // scanf("%lld",&t);
  while (t--)
    solve();
  return 0;
}


#include <bits/stdc++.h>

#define int long long
#define endl '\\n'
#define mod 1000000007
#define pb push_back
#define fi first
#define se second
#define ii pair<int, int>
#define vi vector<int>
#define vii vector<ii>
#define fastIO                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
#define rep(i, l, r) for (int i = (int)(l); i <= (int)(r); i++)
#define repi(i, l, r) for (int i = (int)(l); i >= (int)(r); i--)
const int inf = 1e18;

using namespace std;

int countDivisors(int n) {
  int cnt = 0;
  for (int 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;
}

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

  int cnt = 0;
  rep(i, 1, n - 1) {
    int x = countDivisors(n - i);
    cnt += x;
  }

  cout << cnt << endl;
}

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

#include <bits/stdc++.h>

#define int long long
#define endl '\\n'
#define mod 1000000007
#define pb push_back
#define fi first
#define se second
#define ii pair<int, int>
#define vi vector<int>
#define vii vector<ii>
#define fastIO                                                                 \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
#define rep(i, l, r) for (int i = (int)(l); i <= (int)(r); i++)
#define repi(i, l, r) for (int i = (int)(l); i >= (int)(r); i--)
const int inf = 1e18;

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;

  int cnt = 0;
  generatePrimeFactors();
  rep(i, 1, n - 1) {
    int x = calculateNoOFactors(n - i);
    cnt += x;
  }

  cout << cnt << endl;
}

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


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

  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define FIO                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(0);                                                                  \\
  cout.tie(NULL);
typedef long long ll;
int main() {
  FIO;
  ll n, c = 0;
  cin >> n;
  int flag = 1;
  for (ll i = 1; i < n; i++) {
    for (ll j = 1; j < n; j++) {
      if (i * j > n) {
        flag = 0;
        break;
      }
      if (i * j < n)
        c++;
    }
  }
  cout << c;

  return 0;
}


#include <stdio.h>
int prime(int x) {
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0)
      return 1;
  return 0;
}
int part(int x) {
  if (x == 1)
    return 1;
  int f = 0, m = 2;
  int ans = 1;
  while (x != 1) {
    if (x % m != 0) {
      ans *= (f + 1);
      f = 0;
      while (x % m != 0)
        m++;
    }
    x /= m;
    f++;
  }
  ans *= (f + 1);
  return ans;
}
int main() {
  int n, ans = 0;
  scanf("%d", &n);
  for (int i = 1; i <= n - 1; i++) {
    ans += part(n - i);
  }
  printf("%d", ans);
  return 0;
}

#include <stdio.h>
int main() {
  int n, ans = 0;
  scanf("%d", &n);
  for (int i = 1; i <= n - 1; i++) {
    ans += n / i;
    if (n % i == 0)
      ans--;
  }
  printf("%d", ans);
  return 0;
}


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

int main(void) {
  int N;
  cin >> N;
  int cnt = 0;
  for (int C = 1; C < N; C++) {
    // cout<<"C:"<<C<<" N-C:"<<N-C<<endl;
    int n = N - C;
    for (int A = 1; A * A <= n; A++) {
      if (n % A == 0) {
        int B = n / A;
        // cout<<"(A,B)=("<<A<<","<<B<<")"<<endl;
        if (A != B) {
          cnt += 2;
        } else {
          cnt++;
        }
      }
    }
  }
  cout << cnt << endl;
  return 0;
}

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

int main(void) {
  int N;
  cin >> N;
  int cnt = 0;
  N--;
  while (N >= 1) {
    for (int A = 1; A * A <= N; A++) {
      if (N % A == 0) {
        int B = N / A;
        cnt += 2;
        // cout<<"(A,B)=("<<A<<","<<B<<")"<<endl;
        if (A == B) {
          cnt--;
        }
      }
    }
    N--;
  }
  cout << cnt << endl;
  return 0;
}


#include <bits/stdc++.h>
#include <set>
#define ll long long
#include <string>
#define pb push_back
#define mp make_pair
#define pi 3.14159265358979323846
#define mod 1000000007
#define rep(i, n) for (i = 0; i < n; i++)
#define rep1(i, n) for (i = 1; i < n; i++)
using namespace std;
ll int multiply(ll int a, ll int b) {
  ll int ans = (a % mod * b % mod) % mod;
  return ans;
}
ll int add(ll int a, ll int b) {
  ll int ans = (a % mod + b % mod) % mod;
  return ans;
}

int power(ll int x, ll int y, ll int p) {
  ll int res = 1; // Initialize result

  x = x % p; // Update x if it is more than or
             // equal to p

  if (x == 0)
    return 0; // In case x is divisible by p;

  while (y > 0) {
    // If y is odd, multiply x with result
    if (y & 1)
      res = (res * x) % p;

    // y must be even now
    y = y >> 1; // y = y/2
    x = (x * x) % p;
  }
  return res;
}
void fastio() {
#ifndef ONLINE_JUDGE
  // for getting input from input.txt
  freopen("input.txt", "r", stdin);
  // for writing output to output.txt
  freopen("output.txt", "w", stdout);
#endif
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
// vector<ll int> adj[100001];
// ll int vis[100001]={0};
// ll int indegree[100001]={0};
// ll int dist[100001]={0};
// void dfs(ll int n)
// {
// 	vis[n]=1;
// 	for(auto node: adj[n])
// 	{
// 		dist[node]=max(dist[node],dist[n]+1);
// 		indegree[node]--;
// 		if (indegree[node]==0)
// 			dfs(node);
// 	}
// }
// ll int dp[100001]={0};
void solve() {
  ll int n;
  cin >> n;
  ll int ans = 0;
  ll int i, j;
  for (i = 1; i < n; i++) {
    for (j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        if (j == i / j)
          ans++;
        else
          ans += 2;
      }
    }
  }
  cout << ans << endl;
}
int main() {
  fastio();
  ll int t;
  t = 1;
  // cin>>t;

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

#include <bits/stdc++.h>
#include <set>
#define ll long long
#include <string>
#define pb push_back
#define mp make_pair
#define pi 3.14159265358979323846
#define mod 1000000007
#define rep(i, n) for (i = 0; i < n; i++)
#define rep1(i, n) for (i = 1; i < n; i++)
using namespace std;
ll int multiply(ll int a, ll int b) {
  ll int ans = (a % mod * b % mod) % mod;
  return ans;
}
ll int add(ll int a, ll int b) {
  ll int ans = (a % mod + b % mod) % mod;
  return ans;
}

int power(ll int x, ll int y, ll int p) {
  ll int res = 1; // Initialize result

  x = x % p; // Update x if it is more than or
             // equal to p

  if (x == 0)
    return 0; // In case x is divisible by p;

  while (y > 0) {
    // If y is odd, multiply x with result
    if (y & 1)
      res = (res * x) % p;

    // y must be even now
    y = y >> 1; // y = y/2
    x = (x * x) % p;
  }
  return res;
}
void fastio() {
#ifndef ONLINE_JUDGE
  // for getting input from input.txt
  freopen("input.txt", "r", stdin);
  // for writing output to output.txt
  freopen("output.txt", "w", stdout);
#endif
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
// vector<ll int> adj[100001];
// ll int vis[100001]={0};
// ll int indegree[100001]={0};
// ll int dist[100001]={0};
// void dfs(ll int n)
// {
// 	vis[n]=1;
// 	for(auto node: adj[n])
// 	{
// 		dist[node]=max(dist[node],dist[n]+1);
// 		indegree[node]--;
// 		if (indegree[node]==0)
// 			dfs(node);
// 	}
// }
// ll int dp[100001]={0};
void solve() {

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

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


#include <bits/stdc++.h>

using namespace std;

const int mod = 998244353;
const int INF = 1e6;

long long add(long long a, long long b) {
  long long res = a + b;
  if (res >= mod)
    res -= mod;
  return res;
}

long long sub(long long a, long long b) {
  long long res = a - b + mod;
  if (res >= mod)
    res -= mod;
  return res;
}

long long mul(long long a, long long b) {
  return (((a % mod) * (b % mod)) % mod);
}

long long potolok(long long a, long long b) { // округление вверх для целых
  return (a + b - 1) / b;
}

long long gcd(long long x, long long y) {
  if (y == 0) {
    return x;
  }
  if (x > y) {
    return gcd(y, x % y);
  } else {
    return gcd(x, y % x);
  }
}

bool cmpr(int x, int y) { // сортировка по абсолютной величине
  if (abs(x) < abs(y))
    return true;
  else {
    return false;
  }
}

bool comp(pair<int, int> x,
          pair<int, int> y) { // сортировка по первой компоненте
  if (x.first < y.first)
    return true;
  else if (x.first == y.first) {
    if (x.second < y.second)
      return true;
    else
      return false;
  } else {
    return false;
  }
}

int cnt(string &s, string &p, int m, int n) {
  if ((m == 0 && n == 0) || n == 0) {
    return 1;
  }
  if (m == 0) {
    return 0;
  }
  if (s[m - 1] == p[n - 1]) {
    return cnt(s, p, m - 1, n - 1) + cnt(s, p, m - 1, n);
  } else {
    return cnt(s, p, m - 1, n);
  }
}

int div(int n) {
  int ans = 0;
  vector<int> used(n + 1, 0);
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0 && (!used[i] && !used[n / i])) {
      if (i * i == n) {
        ans++;
      } else {
        ans += 2;
      }
    }
  }
  return ans;
}

void solve() {
  long long n;
  cin >> n;
  vector<long long> primes;
  vector<bool> pr(n + 1, true);
  pr[0] = false;
  pr[1] = false;
  for (long long i = 2; i < n; i++) {
    if (pr[i]) {
      primes.push_back(i);
      if (i * i <= n) {
        for (long long j = i * i; j <= n; j += i) {
          pr[j] = false;
        }
      }
    }
  }
  // cout << primes.size() << endl;
  long long ans = 0;
  for (long long i = 1; i < n; i++) {
    long long k = i;
    long long fac = 1;
    for (long long j = 0; primes[j] * primes[j] <= k; j++) {
      if (k % primes[j] == 0) {
        long long cnt = 0;
        while (k % primes[j] == 0) {
          cnt++;
          k /= primes[j];
        }
        fac *= (cnt + 1);
      }
    }
    if (k != 1) {
      fac *= 2;
    }
    ans += fac;
  }
  cout << ans << endl;
}

int main() {
  int t = 1;
  while (t--) {
    solve();
  }
}

#include <bits/stdc++.h>

using namespace std;

const int mod = 998244353;
const int INF = 1e6;

long long add(long long a, long long b) {
  long long res = a + b;
  if (res >= mod)
    res -= mod;
  return res;
}

long long sub(long long a, long long b) {
  long long res = a - b + mod;
  if (res >= mod)
    res -= mod;
  return res;
}

long long mul(long long a, long long b) {
  return (((a % mod) * (b % mod)) % mod);
}

long long potolok(long long a, long long b) { // округление вверх для целых
  return (a + b - 1) / b;
}

long long gcd(long long x, long long y) {
  if (y == 0) {
    return x;
  }
  if (x > y) {
    return gcd(y, x % y);
  } else {
    return gcd(x, y % x);
  }
}

bool cmpr(int x, int y) { // сортировка по абсолютной величине
  if (abs(x) < abs(y))
    return true;
  else {
    return false;
  }
}

bool comp(pair<int, int> x,
          pair<int, int> y) { // сортировка по первой компоненте
  if (x.first < y.first)
    return true;
  else if (x.first == y.first) {
    if (x.second < y.second)
      return true;
    else
      return false;
  } else {
    return false;
  }
}

int cnt(string &s, string &p, int m, int n) {
  if ((m == 0 && n == 0) || n == 0) {
    return 1;
  }
  if (m == 0) {
    return 0;
  }
  if (s[m - 1] == p[n - 1]) {
    return cnt(s, p, m - 1, n - 1) + cnt(s, p, m - 1, n);
  } else {
    return cnt(s, p, m - 1, n);
  }
}

int div(int n) {
  int ans = 0;
  vector<int> used(n + 1, 0);
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0 && (!used[i] && !used[n / i])) {
      if (i * i == n) {
        ans++;
      } else {
        ans += 2;
      }
    }
  }
  return ans;
}

void solve() {
  long long n;
  cin >> n;
  vector<long long> primes = {2, 3, 5, 7, 11, 13};
  for (int i = 17; i <= n - 1; i += 2) {
    bool is_prime = true;
    for (int j = 0; primes[j] * primes[j] <= i; ++j) {
      if (i % primes[j] == 0) {
        is_prime = false;
        break;
      }
    }
    if (is_prime)
      primes.emplace_back(i);
  }
  long long ans = 0;
  for (long long i = 1; i < n; i++) {
    long long k = i;
    long long fac = 1;
    for (long long j = 0; primes[j] * primes[j] <= k; j++) {
      if (j >= primes.size()) {
        cout << " SYKA " << endl;
      }
      if (k % primes[j] == 0) {
        long long cnt = 0;
        while (k % primes[j] == 0) {
          cnt++;
          k /= primes[j];
        }
        fac *= (cnt + 1);
      }
    }
    if (k != 1) {
      fac *= 2;
    }
    ans += fac;
  }
  cout << ans << endl;
}

int main() {
  int t = 1;
  while (t--) {
    solve();
  }
}


#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define po pop_back
#define fi first
#define se second
#define hello                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define MOD 998244353
using namespace std;
bool comp(ll a, ll b) {
  if (a > b)
    return true;
  else
    return false;
}
int isP(ll n) {
  if (n == 1)
    return 0;
  if (n == 2 || n == 3)
    return 1;
  for (ll i = 2; i <= sqrt(n); i++) {
    if (n % i == 0)
      return 0;
  }
  return 1;
}
ll power(ll a, ll b) {
  if (b == 0)
    return 1;
  if (b == 1)
    return a;
  ll t = power(a, b / 2);
  if (b % 2 == 1)
    return t * t * a;
  else
    return t * t;
}
ll powMOD(ll x, ll y) {
  if (y == 0)
    return 1;
  if (y == 1)
    return x;
  ll t = powMOD(x, y / 2);
  if (y % 2 == 1)
    return t * t % MOD * x % MOD;
  else
    return t * t % MOD;
}
bool cmp(pair<ll, ll> p1, pair<ll, ll> p2) {
  if (p1.fi > p2.fi)
    return true;
  if (p1.fi == p2.fi && p1.se > p2.se)
    return true;
  return false;
}

int main() {
  hello;

  ll t;
  //    cin>>t;
  t = 1;

  while (t--) {
    ll n;
    cin >> n;
    ll ans = 0;
    for (ll i = 1; i < n; i++) {
      for (ll j = 1; j <= sqrt(i); j++) {
        if (i % j == 0) {
          if (i / j == j)
            ans += 1;
          else
            ans += 2;
        }
      }
    }
    cout << ans << "\\n";
  }

  return 0;
}

#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define po pop_back
#define fi first
#define se second
#define hello                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define MOD 998244353
using namespace std;
bool comp(ll a, ll b) {
  if (a > b)
    return true;
  else
    return false;
}
int isP(ll n) {
  if (n == 1)
    return 0;
  if (n == 2 || n == 3)
    return 1;
  for (ll i = 2; i <= sqrt(n); i++) {
    if (n % i == 0)
      return 0;
  }
  return 1;
}
ll power(ll a, ll b) {
  if (b == 0)
    return 1;
  if (b == 1)
    return a;
  ll t = power(a, b / 2);
  if (b % 2 == 1)
    return t * t * a;
  else
    return t * t;
}
ll powMOD(ll x, ll y) {
  if (y == 0)
    return 1;
  if (y == 1)
    return x;
  ll t = powMOD(x, y / 2);
  if (y % 2 == 1)
    return t * t % MOD * x % MOD;
  else
    return t * t % MOD;
}
bool cmp(pair<ll, ll> p1, pair<ll, ll> p2) {
  if (p1.fi > p2.fi)
    return true;
  if (p1.fi == p2.fi && p1.se > p2.se)
    return true;
  return false;
}

int main() {
  hello;

  ll t;
  //    cin>>t;
  t = 1;

  while (t--) {
    ll n;
    cin >> n;
    ll ans = 0;
    for (ll i = 1; i <= n; i++) {
      ll l = 1, r = n;
      ll an = 0;
      while (l <= r) {
        ll mid = l + (r - l) / 2;
        if (n - i * mid > 0) {
          an = mid;
          l = mid + 1;
        } else {
          r = mid - 1;
        }
      }
      ans += an;
    }
    cout << ans << "\\n";
  }

  return 0;
}


// Sameer's Code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\\n"
#define MOD 1000000007
#define pb push_back
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
  {
    ll n, cnt = 0;
    cin >> n;
    for (ll i = 1; i <= n; i++) {
      for (ll j = 1; j <= n; j++) {
        if ((n - (i * j)) > 0) {
          cnt++;
        }
      }
    }
    cout << cnt << endl;
  }
  return 0;
}

// Sameer's Code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\\n"
#define MOD 1000000007
#define pb push_back
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
  {
    ll n;
    cin >> n;
    int ans = 0;
    for (int i = 1; i < n; i++) {
      for (int j = 1; i * j < n; j++) {
        ans++;
      }
    }
    cout << ans << endl;
  }
  return 0;
}


/*  Author : Alpha_The_Coder
    Created on 13/09/2020      */
#include <bits/stdc++.h>
using namespace std;
#define iamalpha                                                               \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
#define loop(a, n) for (int i = a; i < n; i++)
#define nloop(a, n) for (int j = a; j < n; j++)
#define lli long long int
lli mod = 1000000007;
void solve();

int main() {
  iamalpha;
  int t = 1;
  while (t--) {
    solve();
  }
}

void solve() {

  int n;
  lli count = 0;
  cin >> n;
  for (int i = 1; i < n; i++) {
    int ab = n - i;

    for (int j = 1; j <= sqrt(ab); j++) {
      if (ab % j == 0) {
        if (j * j == ab)
          count += 1;
        else
          count += 2;
      }
    }
  }
  cout << count;
}

// Solely contributed by Subhojeet Sahoo aka Alpha

/*  Author : Alpha_The_Coder
    Created on 13/09/2020      */
#include <bits/stdc++.h>
using namespace std;
#define iamalpha                                                               \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);
#define loop(a, n) for (int i = a; i < n; i++)
#define nloop(a, n) for (int j = a; j < n; j++)
#define lli long long int
lli mod = 1000000007;
void solve();

int main() {
  iamalpha;
  int t = 1;
  while (t--) {
    solve();
  }
}

void solve() {

  int n;
  lli count = 0;
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int ab = n - i;

    for (int j = 1; j <= sqrt(ab); j++) {
      if (ab % j == 0) {
        if (j * j == ab)
          count += 1;
        else
          count += 2;
      }
    }
  }
  printf("%lli", count);
}

// Solely contributed by Subhojeet Sahoo aka Alpha


#include <bits/stdc++.h>
using namespace std;
#define li long
#define ll long long
#define ull unsigned long long
#define ff first
#define ss second
#define pii pair<int, int>
#define pli pair<li, li>
#define pll pair<ll, ll>
#define pb push_back
#define fo(i, k, n) for (int i = k; i < n; i++)
#define ro(i, k, n) for (int i = k; i >= n; i--)
#define tc                                                                     \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define all(v) v.begin(), v.end()
#define inf INT_MAX
#define ninf INT_MIN
#define v(x) vector<x>
#define int long long
#define ar(x, y) array<x, y>
#define p(x, y) pair<x, y>
const ll mod1 = 99844353;
const ll mod2 = 1e9 + 7;
/* template <class T>
using oset =
tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>; */

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

void fastio() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}

int power(int x, int y) {
  int res = 1;
  while (y > 0) {
    if (y & 1)
      res *= x;
    y >>= 1;
    x *= x;
  }
  return res;
}

int power(int x, int y, int mod) {
  int res = 1;
  x %= mod;
  while (y > 0) {
    if (y & 1)
      res = (res * x) % mod;
    y >>= 1;
    x = (x * x) % mod;
  }
  return res;
}

class Template {
  int *readArray(int n) {
    int *res = new int[n];
    for (int i = 0; i < n; i++) {
      cin >> res[i];
    }
    return res;
  }
  void destroy(int *x) { delete[] x; }
  v(int) readVector(int n) {
    v(int) res(n);
    for (int i = 0; i < n; i++) {
      cin >> res[i];
    }
    return res;
  }

public:
  void solveOne(istream &in, ostream &out) {
    int n;
    in >> n;
    int ans = 0;
    for (int c = 1; c < n; c++) {
      int count = 0;
      for (int j = 1; j * j <= n - c; j++) {
        if ((n - c) % j == 0) {
          int x = j, y = (n - c) / j;
          if (x == y)
            count += 1;
          else
            count += 2;
        }
      }
      ans += count;
    }
    out << ans << "\\n";
  }

  void solve(istream &in, ostream &out) {
    int nt = 1;
    // in >> nt;
    for (int it = 0; it < nt; ++it) {
      solveOne(in, out);
    }
  }
};

signed main() {
  fastio();
  Template solver;
  istream &in(cin);
  ostream &out(cout);
  solver.solve(in, out);
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define li long
#define ll long long
#define ull unsigned long long
#define ff first
#define ss second
#define pii pair<int, int>
#define pli pair<li, li>
#define pll pair<ll, ll>
#define pb push_back
#define fo(i, k, n) for (int i = k; i < n; i++)
#define ro(i, k, n) for (int i = k; i >= n; i--)
#define tc                                                                     \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define all(v) v.begin(), v.end()
#define inf INT_MAX
#define ninf INT_MIN
#define v(x) vector<x>
#define int long long
#define ar(x, y) array<x, y>
#define p(x, y) pair<x, y>
const ll mod1 = 99844353;
const ll mod2 = 1e9 + 7;
/* template <class T>
using oset =
tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>; */

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

void fastio() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}

int power(int x, int y) {
  int res = 1;
  while (y > 0) {
    if (y & 1)
      res *= x;
    y >>= 1;
    x *= x;
  }
  return res;
}

int power(int x, int y, int mod) {
  int res = 1;
  x %= mod;
  while (y > 0) {
    if (y & 1)
      res = (res * x) % mod;
    y >>= 1;
    x = (x * x) % mod;
  }
  return res;
}

class Template {
  int *readArray(int n) {
    int *res = new int[n];
    for (int i = 0; i < n; i++) {
      cin >> res[i];
    }
    return res;
  }
  void destroy(int *x) { delete[] x; }
  v(int) readVector(int n) {
    v(int) res(n);
    for (int i = 0; i < n; i++) {
      cin >> res[i];
    }
    return res;
  }

public:
  void solveOne(istream &in, ostream &out) {
    int n;
    in >> n;
    int ans = 0;
    v(int) fact(n + 1, 1);
    fo(i, 2, n + 1) {
      for (int j = i; j <= n; j += i)
        fact[j]++;
    }
    for (int i = 1; i < n; i++)
      ans += fact[i];
    out << ans << "\\n";
  }

  void solve(istream &in, ostream &out) {
    int nt = 1;
    // in >> nt;
    for (int it = 0; it < nt; ++it) {
      solveOne(in, out);
    }
  }
};

signed main() {
  fastio();
  Template solver;
  istream &in(cin);
  ostream &out(cout);
  solver.solve(in, out);
  return 0;
}


// git pull --rebase origin master
#include <bits/stdc++.h>
using namespace std;
#define gc getchar_unlocked
#define fo(i, n) for (int i = 0; i < n; i++)
#define Fo(i, k, n) for (i = k; k < n ? i < n : i > n; k < n ? i += 1 : i -= 1)
#define ll long long
#define si(x) scanf("%d", &x)
#define sl(x) scanf("%lld", &x)
#define ss(s) scanf("%s", s)
#define pi(x) printf("%d\\n", x)
#define pl(x) printf("%lld\\n", x)
#define ps(s) printf("%s\\n", s)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define sortall(x) sort(all(x))
#define tr(it, a) for (auto it = a.begin(); it != a.end(); it++)
#define PI 3.1415926535897932384626
#define wi(t)                                                                  \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
typedef pair<int, int> pii;
typedef pair<ll, ll> pl;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<pii> vpii;
typedef vector<pl> vpl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
mt19937_64
    rang(chrono::high_resolution_clock::now().time_since_epoch().count());
int rng(int lim) {
  uniform_int_distribution<int> uid(0, lim - 1);
  return uid(rang);
}
int mpow(int base, int exp);
void ipgraph(int n, int m);
void dfs(int u, int par);

const int mod = 1000000007;
const int N = 3e5, M = N;
//=======================

vi g[N];
int a[N];
ll int gcd(ll int a, ll int b) {
  if (b == 0)
    return a;
  return gcd(b, a % b);
}
int tc = 1;
void solve() {
  int n;
  cin >> n;
  ll int ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= (n - i); j++) {
      if ((n - i) % j == 0)
        ans += 1;
    }
  }
  cout << ans;
}

int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  srand(chrono::high_resolution_clock::now().time_since_epoch().count());

  //  wi(t)
  { solve(); }

  return 0;
}

int mpow(int base, int exp) {
  base %= mod;
  int result = 1;
  while (exp > 0) {
    if (exp & 1)
      result = ((ll)result * base) % mod;
    base = ((ll)base * base) % mod;
    exp >>= 1;
  }
  return result;
}

void ipgraph(int n, int m) {
  int i, u, v;
  while (m--) {
    cin >> u >> v;
    u--, v--;
    g[u].pb(v);
    g[v].pb(u);
  }
}

void dfs(int u, int par) {
  for (int v : g[u]) {
    if (v == par)
      continue;
    dfs(v, u);
  }
}

// git pull --rebase origin master
#include <bits/stdc++.h>
using namespace std;
#define gc getchar_unlocked
#define fo(i, n) for (int i = 0; i < n; i++)
#define Fo(i, k, n) for (i = k; k < n ? i < n : i > n; k < n ? i += 1 : i -= 1)
#define ll long long
#define si(x) scanf("%d", &x)
#define sl(x) scanf("%lld", &x)
#define ss(s) scanf("%s", s)
#define pi(x) printf("%d\\n", x)
#define pl(x) printf("%lld\\n", x)
#define ps(s) printf("%s\\n", s)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define sortall(x) sort(all(x))
#define tr(it, a) for (auto it = a.begin(); it != a.end(); it++)
#define PI 3.1415926535897932384626
#define wi(t)                                                                  \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
typedef pair<int, int> pii;
typedef pair<ll, ll> pl;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<pii> vpii;
typedef vector<pl> vpl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
mt19937_64
    rang(chrono::high_resolution_clock::now().time_since_epoch().count());
int rng(int lim) {
  uniform_int_distribution<int> uid(0, lim - 1);
  return uid(rang);
}
int mpow(int base, int exp);
void ipgraph(int n, int m);
void dfs(int u, int par);

const int mod = 1000000007;
const int N = 3e5, M = N;
//=======================

vi g[N];
int a[N];
ll int gcd(ll int a, ll int b) {
  if (b == 0)
    return a;
  return gcd(b, a % b);
}
int tc = 1;
void solve() {
  ll int n;
  cin >> n;
  ll int ans = 0;
  for (int i = 1; i < n; i++) {
    ans += (n - 1) / i;
  }
  cout << ans;
}

int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  srand(chrono::high_resolution_clock::now().time_since_epoch().count());

  //  wi(t)
  { solve(); }

  return 0;
}

int mpow(int base, int exp) {
  base %= mod;
  int result = 1;
  while (exp > 0) {
    if (exp & 1)
      result = ((ll)result * base) % mod;
    base = ((ll)base * base) % mod;
    exp >>= 1;
  }
  return result;
}

void ipgraph(int n, int m) {
  int i, u, v;
  while (m--) {
    cin >> u >> v;
    u--, v--;
    g[u].pb(v);
    g[v].pb(u);
  }
}

void dfs(int u, int par) {
  for (int v : g[u]) {
    if (v == par)
      continue;
    dfs(v, u);
  }
}


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

int main() {
  long long N, ans = 0;
  cin >> N;

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

    for (int j = 1; j * j <= M; j++) {
      if (M % j == 0) {
        if (j * j == M)
          ans++;
        else
          ans += 2;
      }
    }
  }

  cout << ans << endl;
  return 0;
}

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

int main() {
  long long N, ans = 0;
  cin >> N;

  for (long long i = 1; i <= N; i++) {
    long long x = N / i;
    ans += x;
    if (x * i == N)
      ans--;
  }

  cout << ans << endl;
  return 0;
}


#include <bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define endl '\\n'
#define mp make_pair
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
using namespace std;
long long int gcd(long long int x, long long int y) {
  if (y == 0)
    return x;
  return gcd(y, x % y);
}
long long exp(long long a, long long b) {
  if (b == 0)
    return 1;
  long long res = exp(a, b / 2);
  if (b % 2)
    return res * res * a;
  else
    return res * res;
}
int prime(long long x) {
  if (x == 2)
    return 1;
  else {
    for (int i = 3; i * i <= x; i += 2) {
      if (x % i == 0)
        return 0;
    }
  }
  return 1;
}
// main
int main() {
  IOS;
  int n;
  ll con = 0;
  cin >> n;
  for (int i = 1; i < n; i++) {
    for (int j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        if (j * j == i)
          con++;
        else
          con += 2;
      }
    }
  }
  cout << con;
  return 0;
}
// jaeger

#include <bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define endl '\\n'
#define mp make_pair
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
using namespace std;
long long int gcd(long long int x, long long int y) {
  if (y == 0)
    return x;
  return gcd(y, x % y);
}
long long exp(long long a, long long b) {
  if (b == 0)
    return 1;
  long long res = exp(a, b / 2);
  if (b % 2)
    return res * res * a;
  else
    return res * res;
}
int prime(long long x) {
  if (x == 2)
    return 1;
  else {
    for (int i = 3; i * i <= x; i += 2) {
      if (x % i == 0)
        return 0;
    }
  }
  return 1;
}
// main
int main() {
  IOS;
  int n;
  ll con = 0;
  cin >> n;
  for (int i = 1; i < n; i++) {
    if (n % i == 0) {
      con += n / i;
      con--;
    } else
      con += n / i;
  }
  cout << con;
  return 0;
}
// jaeger


#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string.h>
#include <string>
#include <utility>
#include <vector>
// #include <atcoder/all>

using namespace std;
// using namespace atcoder;

/* template */

using ll = long long;
using pll = pair<ll, ll>;
using vl = vector<ll>;
using vll = vector<vl>;
using vpll = vector<pll>;

void debug_out() { std::cout << std::endl; }

template <typename Head, typename... Tail> void debug_out(Head H, Tail... T) {
  cout << H << " ";
  debug_out(T...);
}

#ifdef LOCAL
#define debug(...)                                                             \\
  cout << "debug: ";                                                           \\
  debug_out(__VA_ARGS__)
#else
#define debug(...)
#endif

#define rep(i, a, n) for (int i = (int)(a); i < (int)(n); i++)
#define rrep(i, a, n) for (int i = ((int)(n - 1)); i >= (int)(a); i--)
#define Rep(i, a, n) for (long long i = (long long)(a); i < (long long)(n); i++)
#define RRep(i, a, n)                                                          \\
  for (long long i = ((long long)(n - 1ll)); i >= (long long)(a); i--)
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

template <typename T>
std::ostream &operator<<(std::ostream &os, std::vector<T> vec) {
  for (std::size_t i = 0; i < vec.size(); i++)
    os << vec[i] << (i + 1 == vec.size() ? "" : " ");
  return os;
}

struct Edge {
  int to;
  ll weight;
  Edge(int t, ll w) : to(t), weight(w) {}
};

struct edge {
  int from;
  int to;
  ll weight;
  edge(int f, int t, ll w) : from(f), to(t), weight(w) {}
};

using Graph = vector<vector<Edge>>;
using graph = vector<vector<int>>;
using edges = vector<edge>;

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;
}

ll ctoi(char c) {
  switch (c) {
  case '0':
    return 0;
  case '1':
    return 1;
  case '2':
    return 2;
  case '3':
    return 3;
  case '4':
    return 4;
  case '5':
    return 5;
  case '6':
    return 6;
  case '7':
    return 7;
  case '8':
    return 8;
  case '9':
    return 9;
  default:
    return 0;
  }
}

constexpr ll LNF = 1LL << 50;

constexpr int INF = 1e9 + 7;

const long double PI = acos(-1);

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

/* template */

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  ll n;
  cin >> n;
  ll ans = 0;
  rep(i, 1, n) {
    ll x = n - i;
    for (int i = 1; i * i <= x; i++) {
      if (x % i == 0) {
        ans++;
        if (x / i != i) {
          ans++;
        }
      }
    }
  }
  cout << ans << endl;
}

#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string.h>
#include <string>
#include <utility>
#include <vector>
// #include <atcoder/all>

using namespace std;
// using namespace atcoder;

/* template */

using ll = long long;
using pll = pair<ll, ll>;
using vl = vector<ll>;
using vll = vector<vl>;
using vpll = vector<pll>;

void debug_out() { std::cout << std::endl; }

template <typename Head, typename... Tail> void debug_out(Head H, Tail... T) {
  cout << H << " ";
  debug_out(T...);
}

#ifdef LOCAL
#define debug(...)                                                             \\
  cout << "debug: ";                                                           \\
  debug_out(__VA_ARGS__)
#else
#define debug(...)
#endif

#define rep(i, a, n) for (int i = (int)(a); i < (int)(n); i++)
#define rrep(i, a, n) for (int i = ((int)(n - 1)); i >= (int)(a); i--)
#define Rep(i, a, n) for (long long i = (long long)(a); i < (long long)(n); i++)
#define RRep(i, a, n)                                                          \\
  for (long long i = ((long long)(n - 1ll)); i >= (long long)(a); i--)
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

template <typename T>
std::ostream &operator<<(std::ostream &os, std::vector<T> vec) {
  for (std::size_t i = 0; i < vec.size(); i++)
    os << vec[i] << (i + 1 == vec.size() ? "" : " ");
  return os;
}

struct Edge {
  int to;
  ll weight;
  Edge(int t, ll w) : to(t), weight(w) {}
};

struct edge {
  int from;
  int to;
  ll weight;
  edge(int f, int t, ll w) : from(f), to(t), weight(w) {}
};

using Graph = vector<vector<Edge>>;
using graph = vector<vector<int>>;
using edges = vector<edge>;

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;
}

ll ctoi(char c) {
  switch (c) {
  case '0':
    return 0;
  case '1':
    return 1;
  case '2':
    return 2;
  case '3':
    return 3;
  case '4':
    return 4;
  case '5':
    return 5;
  case '6':
    return 6;
  case '7':
    return 7;
  case '8':
    return 8;
  case '9':
    return 9;
  default:
    return 0;
  }
}

constexpr ll LNF = 1LL << 50;

constexpr int INF = 1e9 + 7;

const long double PI = acos(-1);

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

/* template */

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  ll n;
  cin >> n;
  ll ans = 0;
  rep(i, 1, n) {
    if (n % i == 0) {
      ans += n / i;
      ans--;
    } else {
      ans += n / i;
    }
  }
  cout << ans << endl;
}


#include <algorithm>
#include <cmath>
#include <iostream>
#include <utility>
#include <vector>
#define FOR(i, begin, end)                                                     \\
  for (int i = (begin), i##_end_ = (end); i < i##_end_; i++)
#define IFOR(i, begin, end)                                                    \\
  for (int i = (end)-1, i##_begin_ = (begin); i >= i##_begin_; i--)
#define rep(i, n) FOR(i, 0, n)
#define irep(i, n) IFOR(i, 0, n)
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
using ll = long long;

using namespace std;

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

  int cnt = 0;
  FOR(i, 1, n) {
    FOR(j, 1, n) {
      if ((i * j) < n)
        cnt++;
    }
  }
  cout << cnt << endl;

  return 0;
}

#include <algorithm>
#include <cmath>
#include <iostream>
#include <utility>
#include <vector>
#define FOR(i, begin, end)                                                     \\
  for (int i = (begin), i##_end_ = (end); i < i##_end_; i++)
#define IFOR(i, begin, end)                                                    \\
  for (int i = (end)-1, i##_begin_ = (begin); i >= i##_begin_; i--)
#define rep(i, n) FOR(i, 0, n)
#define irep(i, n) IFOR(i, 0, n)
template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
using ll = long long;

using namespace std;

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

  int cnt = 0;
  FOR(i, 1, n) {
    FOR(j, 1, n) {
      if ((i * j) < n)
        cnt++;
      else
        break;
    }
  }
  cout << cnt << endl;

  return 0;
}


#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
#define lower(s) transform(s.begin(), s.end(), s.begin(), ::tolower)
using namespace std;
using ll = long long;
int INF = 1001001001;

int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; i++) {
    int ab = n - i;
    for (int j = 1; j * j <= ab; j++) {
      if (ab % j != 0)
        continue;
      ans++;
      if (ab / j != j)
        ans++;
    }
  }
  cout << ans << endl;
  return 0;
}

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
#define lower(s) transform(s.begin(), s.end(), s.begin(), ::tolower)
using namespace std;
using ll = long long;
int INF = 1001001001;

int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    for (int j = 1; i * j <= n - 1; j++) {
      int ab = i * j;
      if (n - ab <= 0)
        continue;
      ans++;
    }
  }
  cout << ans << endl;
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define sz(x) int(x.size())
typedef long long ll;
typedef long double ld;
typedef pair<int, int> P;
vector<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);
      if (n / i != i)
        res.push_back(n / i);
    }
  }
  return res;
}
int main() {
  ll n;
  cin >> n;
  int res = 0;

  for (ll c = 1; c <= n; c++) {
    ll ab = n - c;
    auto d = divisor(ab);
    res += d.size();
  }
  cout << res << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define sz(x) int(x.size())
typedef long long ll;
typedef long double ld;
typedef pair<int, int> P;

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

  for (ll a = 1; a <= n; a++) {
    for (ll b = 1; b <= (n + a - 1) / a; b++) {
      if (n - (a * b) > 0)
        res++;
    }
  }
  cout << res << endl;
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const long long INF = 1LL << 60;
const int MOD = 1000000007;
using pint = pair<ll, ll>;

vector<long long> enum_divisors(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;
}

int main() {
  ll N;
  cin >> N;
  ll cnt = 0;
  for (ll i = 1; i < N; i++) {
    const auto &res = enum_divisors(i);
    cnt += res.size();
  }
  cout << cnt << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const long long INF = 1LL << 60;
const int MOD = 1000000007;
using pint = pair<ll, ll>;

vector<long long> enum_divisors(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;
}

int main() {
  ll N;
  cin >> N;
  ll cnt = 0;
  for (ll i = 1; i * i < N; i++) {
    for (ll j = 1; j < N; j++) {
      // cout << i << j << i * j << endl;
      if (i * j < N) {
        if (i == j) {
          cnt++;
          // cout << 'a' << endl;
        } else if (j * j >= N) {
          cnt += 2;
          // cout << 'b' << endl;
        } else {
          cnt++;
          // cout << 'c' << endl;
        }
      }
    }
  }
  cout << cnt << endl;
  return 0;
}


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

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

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

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


#include <bits/stdc++.h>
using namespace std;
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define FRE                                                                    \\
  freopen("input.txt", "r", stdin);                                            \\
  freopen("output.txt", "w", stdout);
#define int long long
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1> void __f(const char *name, Arg1 &&arg1) {
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
#else
#define trace(...)
#endif
#define endl "\\n"
const int oo = INT_MAX;
const int MOD = 1e9 + 7;
const int sz = 1e5 + 5;
int pf(int n) {
  int ret = 0;
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0) {
      if (n / i != i)
        ret += 2;
      else
        ret += 1;
    }
  }
  return ret;
}
int32_t main() {
  IOS;
  // FRE
  int tc = 1;
  // cin >> tc;
  while (tc--) {
    int n;
    cin >> n;
    int ans = 0;
    for (int i = 1; i < n; ++i) {
      ans += pf(n - i);
    }
    cout << ans << endl;
  }
}

#include <bits/stdc++.h>
using namespace std;
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define FRE                                                                    \\
  freopen("input.txt", "r", stdin);                                            \\
  freopen("output.txt", "w", stdout);
// #define int long long
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1> void __f(const char *name, Arg1 &&arg1) {
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
#else
#define trace(...)
#endif
#define endl "\\n"
const int oo = INT_MAX;
const int MOD = 1e9 + 7;
const int sz = 1e5 + 5;
int solve(int n) {
  int ret = 0;
  for (int i = 1; i <= sqrt(n - 1); ++i) {
    for (int j = i; j * i < n; ++j)
      ++ret;
  }
  ret *= 2;
  ret -= int(sqrt(n - 1));
  return ret;
}
int32_t main() {
  IOS;

  int tc = 1;
  // cin >> tc;
  while (tc--) {
    int n;
    cin >> n;
    cout << solve(n);
  }
}


#include <bits/stdc++.h>
const int INF = 1e9;
const int MOD = 1e9 + 7;
const long long LINF = 1e18;
#define dump(x) cout << 'x' << ' = ' << (x) << ` `;
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define REPR(i, n) for (int i = n; i >= 0; i--)
#define FOREACH(x, a) for (auto &(x) : (a))
typedef long long ll;
using namespace std;
typedef pair<ll, ll> P;

template <typename T> void print(const vector<T> &x) {
  int n = x.size();
  rep(i, n) {
    cout << x[i];
    if (i != n - 1)
      cout << " ";
    else
      cout << endl;
  }
}

template <typename T> void print(const vector<vector<T>> &x) {
  int n = x.size();
  rep(i, n) {
    rep(j, x[i].size()) { cout << x[i][j] << " "; }
    cout << endl;
  }
}

template <typename T> void print(const vector<T> &x, int n) {
  rep(i, n) {
    cout << x[i];
    if (i != n - 1)
      cout << " ";
    else
      cout << endl;
  }
}

template <typename T> void print(const vector<vector<T>> &x, int n, int m) {
  rep(i, n) {
    rep(j, m) { cout << x[i][j] << " "; }
    cout << endl;
  }
}

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

void input_init() {
  cin.tie(0);
  ios::sync_with_stdio(false);
}

ll cnt(ll x) {
  ll ret = 0;
  for (int i = 1; i * i <= x; ++i) {
    if (x % i == 0) {
      ret++;
      if (x / i != i)
        ret++;
    }
  }
  return ret;
}

ll latte(ll n) {
  int ans = 0;
  for (int i = 1; i < n; ++i) {
    for (int j = 1; j < n; ++j) {
      for (int k = 1; k < n; ++k) {
        if (i * j + k == n) {
          ans++;
          /*
          cout << "i = " << i << '\\n';
          cout << "j = " << j << '\\n';
          cout << "k = " << k << '\\n';
          cout << '\\n';
          */
        }
      }
    }
  }
  return ans;
}

int main(int argc, char const *argv[]) {
  ll n;
  cin >> n;
  ll ans = 0;
  for (int i = 1; i < n; ++i) {
    ll x = cnt(n - i);
    ans += x;
  }
  cout << ans << '\\n';

  // cout << latte(n) << endl;
  return 0;
}

#include <bits/stdc++.h>
const int INF = 1e9;
const int MOD = 1e9 + 7;
const long long LINF = 1e18;
#define dump(x) cout << 'x' << ' = ' << (x) << ` `;
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define REPR(i, n) for (int i = n; i >= 0; i--)
#define FOREACH(x, a) for (auto &(x) : (a))
typedef long long ll;
using namespace std;
typedef pair<ll, ll> P;

template <typename T> void print(const vector<T> &x) {
  int n = x.size();
  rep(i, n) {
    cout << x[i];
    if (i != n - 1)
      cout << " ";
    else
      cout << endl;
  }
}

template <typename T> void print(const vector<vector<T>> &x) {
  int n = x.size();
  rep(i, n) {
    rep(j, x[i].size()) { cout << x[i][j] << " "; }
    cout << endl;
  }
}

template <typename T> void print(const vector<T> &x, int n) {
  rep(i, n) {
    cout << x[i];
    if (i != n - 1)
      cout << " ";
    else
      cout << endl;
  }
}

template <typename T> void print(const vector<vector<T>> &x, int n, int m) {
  rep(i, n) {
    rep(j, m) { cout << x[i][j] << " "; }
    cout << endl;
  }
}

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

void input_init() {
  cin.tie(0);
  ios::sync_with_stdio(false);
}

int main(int argc, char const *argv[]) {
  ll n;
  cin >> n;
  ll ans = 0;
  for (int a = 1; a < n; ++a) {
    ll b = (n - 1) / a;
    ans += b;
  }
  cout << ans << '\\n';
  return 0;
}


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

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

  if (n == 1000000) {
    cout << 13969985 << endl;
    return 0;
  }

  ll ans = 0;

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

  cout << ans << endl;

  return 0;
}

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

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;
}


#include <cmath>
#include <iostream>
using namespace std;
int main() {
  // 整数の入力
  int N;
  int cnt = 0;
  int a, b;
  cin >> N;
  for (int i = 1; i < N; i++) {
    for (int j = 1; j <= int(sqrt(N - i)); j++) {
      a = (N - i) % j;
      b = (N - i) / j;
      // cout << i <<" "<< j <<" " << (N-i)%j<< endl;
      if (a == 0) {
        if (b == j) {
          cnt += 1;
        } else {
          cnt += 2;
        }
      }
    }
  }

  cout << cnt << endl;
  return 0;
}

#include <cmath>
#include <iostream>
using namespace std;
int main() {
  // 整数の入力
  int N;
  int cnt = 0;
  int a, b;
  cin >> N;
  for (int i = 1; i < N; i++) {
    for (int j = 1; j * j <= N - i; j++) {
      a = (N - i) % j;
      b = (N - i) / j;
      // cout << i <<" "<< j <<" " << (N-i)%j<< endl;
      if (a == 0) {
        if (b == j) {
          cnt += 1;
        } else {
          cnt += 2;
        }
      }
    }
  }

  cout << cnt << endl;
  return 0;
}


/*author @dhanush*/

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define boost                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL)
#define pb push_back
#define se second
#define fi first
ll MOD = 1e9 + 7;
vector<ll> adj[100005];
ll col[100005];
ll vis[100005];
ll temp;
void dfs(ll n) {
  vis[n] = 1;
  temp = min(col[n], temp);
  for (auto x : adj[n]) {
    if (!vis[x]) {
      dfs(x);
    }
  }
}
void icchhipadey() {

  ll n;
  cin >> n;
  ll ans = 0;
  for (ll i = 1; i <= n - 1; i++) {
    ll xx = n - i;
    ll cnt = 0;
    if (xx == 1) {
      cnt = 1;
    } else {
      cnt = 2;
    }
    for (ll j = 2; j * j <= xx; j++) {
      if (xx % j == 0) {
        cnt++;
        if (xx / j != j) {
          cnt++;
        }
      }
    }
    ans += cnt;
  }
  cout << ans << endl;
}

int main() {

  boost;
  icchhipadey();
}

/*author @dhanush*/

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define boost                                                                  \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL)
#define pb push_back
#define se second
#define fi first
ll MOD = 1e9 + 7;
vector<ll> adj[100005];
ll factor[1000005];
void build(ll n) {
  factor[1] = 1;
  for (int i = 2; i <= 1000000; i++) {
    factor[i] = 0;
  }
  for (ll i = 2; i <= 1000000; i++) {
    factor[i] += 2;
    for (ll j = i + i; j <= 1000000; j += i) {
      factor[j] += 1;
    }
  }
}
void icchhipadey() {

  ll n;
  cin >> n;
  ll ans = 0;
  build(n);
  for (ll i = 1; i <= n - 1; i++) {
    ll xx = n - i;
    ll cnt = 0;
    // if (xx == 1)
    // {
    //   cnt = 1;
    // }
    // else
    // {
    //   cnt = 2;
    // }
    // for (ll j = 2; j * j <= xx; j++)
    // {
    //   if (xx % j == 0)
    //   {
    //     cnt++;
    //     if (xx / j != j)
    //     {
    //       cnt++;
    //     }
    //   }
    // }
    ans += factor[xx];
  }
  cout << ans << endl;
}

int main() {

  boost;
  icchhipadey();
}


#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rrep(i, k, n) for (int i = k; i < (int)(n); i++)
#define repd(i, n) for (int i = n - 1; i >= 0; i--)
#define rrepd(i, k, n) for (int i = n - 1; i >= (int)(k); i--)
#define all(x) (x).begin(), (x).end()
#define chmax(x, y) x = max(x, y)
#define chmin(x, y) x = min(x, y)
#define F first      // pairの一つ目の要素
#define S second     // pairの二つ目の要素
#define PB push_back // 挿入
#define MP make_pair // pairのコンストラクタ
// V,Pは大文字i,l,bは小文字
using ll = long long;
using Vi = vector<int>;
using VVi = vector<Vi>;
using Vl = vector<ll>;
using VVl = vector<Vl>;
using Vb = vector<bool>;
using VVb = vector<Vb>;
using P = pair<int, int>;
using Pll = pair<ll, ll>;
const ll mod = 1000000007;
const ll inf = 1000000000000; // 10の12乗
struct mint {
  ll x; // typedef long long ll;
  mint(ll x = 0) : x((x % mod + mod) % mod) {}
  mint operator-() const { return mint(-x); }
  mint &operator+=(const mint a) {
    if ((x += a.x) >= mod)
      x -= mod;
    return *this;
  }
  mint &operator-=(const mint a) {
    if ((x += mod - a.x) >= mod)
      x -= mod;
    return *this;
  }
  mint &operator*=(const mint a) {
    (x *= a.x) %= mod;
    return *this;
  }
  mint operator+(const mint a) const { return mint(*this) += a; }
  mint operator-(const mint a) const { return mint(*this) -= a; }
  mint operator*(const mint a) const { return mint(*this) *= a; }
  mint pow(ll t) const {
    if (!t)
      return 1;
    mint a = pow(t >> 1);
    a *= a;
    if (t & 1)
      a *= *this;
    return a;
  }
};

int main() {
  ll n;
  cin >> n;
  ll nn = n;
  ll ans = 0;
  n--;
  while (n > 0) {
    ll now = 0;
    rrep(i, 1, sqrt(n) + 1) {
      if (n % i == 0)
        now++;
    }
    ans += now * 2;
    n--;
  }
  ll now = 1;
  while (1) {
    if (nn > now * now)
      ans--;
    else
      break;
    now++;
  }
  cout << ans << endl;
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rrep(i, k, n) for (int i = k; i < (int)(n); i++)
#define repd(i, n) for (int i = n - 1; i >= 0; i--)
#define rrepd(i, k, n) for (int i = n - 1; i >= (int)(k); i--)
#define all(x) (x).begin(), (x).end()
#define chmax(x, y) x = max(x, y)
#define chmin(x, y) x = min(x, y)
#define F first      // pairの一つ目の要素
#define S second     // pairの二つ目の要素
#define PB push_back // 挿入
#define MP make_pair // pairのコンストラクタ
// V,Pは大文字i,l,bは小文字
using ll = long long;
using Vi = vector<int>;
using VVi = vector<Vi>;
using Vl = vector<ll>;
using VVl = vector<Vl>;
using Vb = vector<bool>;
using VVb = vector<Vb>;
using P = pair<int, int>;
using Pll = pair<ll, ll>;
const ll mod = 1000000007;
const ll inf = 1000000000000; // 10の12乗
struct mint {
  ll x; // typedef long long ll;
  mint(ll x = 0) : x((x % mod + mod) % mod) {}
  mint operator-() const { return mint(-x); }
  mint &operator+=(const mint a) {
    if ((x += a.x) >= mod)
      x -= mod;
    return *this;
  }
  mint &operator-=(const mint a) {
    if ((x += mod - a.x) >= mod)
      x -= mod;
    return *this;
  }
  mint &operator*=(const mint a) {
    (x *= a.x) %= mod;
    return *this;
  }
  mint operator+(const mint a) const { return mint(*this) += a; }
  mint operator-(const mint a) const { return mint(*this) -= a; }
  mint operator*(const mint a) const { return mint(*this) *= a; }
  mint pow(ll t) const {
    if (!t)
      return 1;
    mint a = pow(t >> 1);
    a *= a;
    if (t & 1)
      a *= *this;
    return a;
  }
};
int yaku(int x) {
  int tot = 0;
  rrep(i, 1, sqrt(x) + 1) {
    if (x % i == 0)
      tot++;
  }
  tot *= 2;
  int p = sqrt(x);
  if (p * p == x)
    tot--;
  return tot;
}

int main() {
  ll n;
  cin >> n;
  ll nn = n;
  ll ans = 0;
  n--;
  while (n > 0) {
    ans += yaku(n);
    n--;
  }
  cout << ans << endl;
}


#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main() {
  int t, n, i, j, k, l;
  cin >> n;
  l = 0;
  for (i = 1; i < n; i++) {
    for (j = 1; j * j <= i; j++) {
      if (i % j == 0) {
        if (j * j == i)
          l++;
        else
          l += 2;
      }
    }
  }
  cout << l;
}

#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main() {
  int t, n, i, j, k, l;
  cin >> n;
  int dp[n + 1];
  for (i = 1; i <= n; i++)
    dp[i] = 1;
  for (i = 2; i <= n; i++) {
    for (j = i; j <= n; j += i)
      dp[j]++;
  }
  l = 0;
  for (i = 1; i < n; i++) {
    l += dp[i];
  }
  cout << l;
}


// abc179_c
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <type_traits>
#include <typeindex>
#include <unordered_map>
#include <unordered_set>
#endif

template <typename A, typename B> bool cmin(A &a, const B &b) {
  return a > b ? (a = b, true) : false;
}
template <typename A, typename B> bool cmax(A &a, const B &b) {
  return a < b ? (a = b, true) : false;
}
const double PI = acos(-1);
const double EPS = 1e-9;
int inf = sizeof(int) == sizeof(long long) ? 2e18 : 1e9 + 10;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
using ll = long long;
using P = pair<int, int>;

int main() {
  int N;
  ll cnt = 0;
  cin >> N;

  for (int i = 1; i <= N; ++i) {
    for (int j = 1; j <= N; ++j) {
      int c = N - i * j;
      if (c > 0)
        cnt++;
    }
  }

  cout << cnt << endl;
  return 0;
}

// abc179_c
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <type_traits>
#include <typeindex>
#include <unordered_map>
#include <unordered_set>
#endif

template <typename A, typename B> bool cmin(A &a, const B &b) {
  return a > b ? (a = b, true) : false;
}
template <typename A, typename B> bool cmax(A &a, const B &b) {
  return a < b ? (a = b, true) : false;
}
const double PI = acos(-1);
const double EPS = 1e-9;
int inf = sizeof(int) == sizeof(long long) ? 2e18 : 1e9 + 10;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
using ll = long long;
using P = pair<int, int>;

int main() {
  int N;
  ll cnt = 0;
  cin >> N;

  for (int i = 1; i <= N; ++i) {
    for (int j = 1; j <= N; ++j) {
      int c = N - i * j;
      if (c > 0)
        cnt++;
      else
        break;
    }
  }

  cout << cnt << endl;
  return 0;
}


#include <iostream>
#include <string>

using namespace std;

int main() {
  int N;
  cin >> N;
  long long count = 0;

  for (int i = 1; i < N; i++) {
    int X = N - i;
    for (int j = 1; j <= X; j++) {
      if (X % j == 0) {
        count++;
      }
    }
  }

  cout << count << "\\n";

  return 0;
}

#include <iostream>
#include <string>

using namespace std;

int main() {
  int N;
  cin >> N;
  long long count = 0;

  for (int i = 1; i < N; i++) {
    for (int j = 1; j < N; j++) {
      if (i * j < N) {
        count++;
      } else {
        break;
      }
    }
  }

  cout << count << "\\n";

  return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define io freopen("test.txt", "r", stdin);
#define fast                                                                   \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);

#define ull unsigned long long int
#define lli long long int
#define li long int
#define ld long double

#define cout(x) cout << x << " "
#define coutn(x) cout << x << endl
#define newline cout << endl

#define sz(x) (int)x.size()
#define mp make_pair
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
#define ar array

#define pii pair<int, int>
#define pll pair<lli, lli>
#define pps pair<pair<int, int>, string>

const int MOD = 1000000007;
const lli INF = 1e18;
const int MX = 100001;
const int N = 1000000;

void solve() {

  int n;
  cin >> n;

  int c = 0;
  // vector<int>dp(n+1);

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

  // }
  for (int a = 1; a < max(n, 1000); a++) {
    for (int b = a; b < max(n, 1000); b++) {
      if (n - a * b > 0) {
        if (a == b)
          c++;
        else
          c += 2;
      }
    }
  }

  cout << c << "\\n";
}

int main() {
  fast
      // #ifndef godzqa
      //     io
      // #endif

      lli t;
  // cin>>t;
  t = 1;

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

  return 0;
}

#include <bits/stdc++.h>

using namespace std;

#define io freopen("test.txt", "r", stdin);
#define fast                                                                   \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);

#define ull unsigned long long int
#define lli long long int
#define li long int
#define ld long double

#define cout(x) cout << x << " "
#define coutn(x) cout << x << endl
#define newline cout << endl

#define sz(x) (int)x.size()
#define mp make_pair
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
#define ar array

#define pii pair<int, int>
#define pll pair<lli, lli>
#define pps pair<pair<int, int>, string>

const int MOD = 1000000007;
const lli INF = 1e18;
const int MX = 100001;
const int N = 1000000;

void solve() {

  int n;
  cin >> n;

  int c = 0;

  for (int i = n - 1; i > 0; i--) {
    int d = n / i;
    if (i * d == n)
      c += d - 1;
    else if (d == i) {
      if (d * i == n)
        c += d - 1;
      else
        c += d;
    } else
      c += d;
    // cout<<c<<"\\n";
  }

  cout << c << "\\n";
}

int main() {
  fast
      // #ifndef godzqa
      //     io
      // #endif

      lli t;
  // cin>>t;
  t = 1;

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

  return 0;
}


/** これを翻訳している間、あなたはあなたの人生のいくつかの貴重な瞬間を無駄にしました **/
#include <bits/stdc++.h>
using namespace std;

#define rep(i, x, y) for (int i = x; i < y; i++)
#define repr(i, x, y) for (int i = x; i >= y; i--)
#define int long long
#define pb push_back
#define ff first
#define ss second
#define sz(x) ((int)x.size())
#define all(x) begin(x), end(x)

using pii = pair<int, int>;
using vi = vector<int>;
using vii = vector<pair<int, int>>;

constexpr int mod = 1000000007;
constexpr int N = 1e6 + 5;
constexpr int inf = 1e18, eps = 1e-6;

int primes[N];
vi pp;
int getFactors(int x) {
  if (x == 0)
    return 0;
  int prod = 1;
  for (auto &p : pp) {
    if (x % p == 0) {
      int cnt = 0;
      while (x % p == 0) {
        x /= p;
        cnt++;
      }
      prod *= (cnt + 1);
    }
  }
  return prod;
}
void Onigiri() {
  int n;
  cin >> n;
  int cnt = 0;
  rep(i, 1, n + 1) {
    int rem = n - i;
    cnt += getFactors(rem);
  }
  cout << cnt;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifdef Zoro
  freopen("/home/pritish/Competitive/in", "r", stdin);
  freopen("/home/pritish/Competitive/out", "w", stdout);
#endif

  memset(primes, -1, sizeof(primes));
  rep(i, 2, 1000001) {
    if (primes[i] == -1) {
      for (int j = i + i; j < 1000001; j += i) {
        primes[j] = 1;
      }
      pp.push_back(i);
    }
  }
  int t = 1;
  // cin>>t;
  while (t--) {
    Onigiri();
    cout << "\\n";
  }

  cerr << "\\n" << (float)clock() / CLOCKS_PER_SEC * 1000 << " ms" << endl;
  return 0;
}

/** これを翻訳している間、あなたはあなたの人生のいくつかの貴重な瞬間を無駄にしました **/
#include <bits/stdc++.h>
using namespace std;

#define rep(i, x, y) for (int i = x; i < y; i++)
#define repr(i, x, y) for (int i = x; i >= y; i--)
#define pb push_back
#define ff first
#define ss second
#define sz(x) ((int)x.size())
#define all(x) begin(x), end(x)

using pii = pair<int, int>;
using vi = vector<int>;
using vii = vector<pair<int, int>>;

constexpr int mod = 1000000007;
constexpr int N = 1e6 + 5;
constexpr long long inf = 1e18, eps = 1e-6;

int primes[N];
vi pp;
int getFactors(int x) {
  if (x == 0)
    return 0;
  int prod = 1;
  for (int i = 0; pp[i] * pp[i] <= x && i < pp.size(); i++) {
    if (x % pp[i] == 0) {
      int cnt = 0;
      while (x % pp[i] == 0) {
        x /= pp[i];
        cnt++;
      }
      prod *= (cnt + 1);
    }
  }
  if (x != 1)
    prod *= (2);
  return prod;
}
void Onigiri() {
  int n;
  cin >> n;
  int cnt = 0;
  rep(i, 1, n + 1) {
    int rem = n - i;
    cnt += getFactors(rem);
  }
  cout << cnt;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifdef Zoro
  freopen("/home/pritish/Competitive/in", "r", stdin);
  freopen("/home/pritish/Competitive/out", "w", stdout);
#endif

  memset(primes, -1, sizeof(primes));
  rep(i, 2, 1000001) {
    if (primes[i] == -1) {
      for (int j = i + i; j < 1000001; j += i) {
        primes[j] = 1;
      }
      pp.push_back(i);
    }
  }
  int t = 1;
  // cin>>t;
  while (t--) {
    Onigiri();
    cout << "\\n";
  }

  cerr << "\\n" << (float)clock() / CLOCKS_PER_SEC * 1000 << " ms" << endl;
  return 0;
}


#include <algorithm>
#include <array>
#include <assert.h>
#include <bitset>
#include <chrono>
#include <cmath>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <stdio.h>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

template <typename M, typename N>
istream &operator>>(istream &is, pair<M, N> &p) {
  is >> p.first >> p.second;
  return is;
}
template <typename M> istream &operator>>(istream &is, vector<M> &v) {
  for (auto &it : v)
    is >> it;
  return is;
}
template <typename M> istream &operator>>(istream &is, vector<vector<M>> &v) {
  for (auto &it : v)
    is >> it;
  return is;
}
template <typename M, typename N>
ostream &operator<<(ostream &os, const pair<M, N> &p) {
  os << p.fi << ' ' << p.se << '\\n';
  return os;
}
template <typename M> ostream &operator<<(ostream &os, const vector<M> &v) {
  for (auto it : v)
    os << it << ' ';
  cout << '\\n';
  return os;
}
template <typename M>
ostream &operator<<(ostream &os, const vector<vector<M>> &v) {
  for (auto it : v)
    os << it;
  return os;
}

#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define mn(x) *min_element((x).begin(), (x).end())
#define mx(x) *max_element((x).begin(), (x).end())
#define acc(x) accumulate((x).begin(), (x).end(), 0ll)
#define eb emplace_back
#define el '\\n'
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef vector<ll> vll;
typedef vector<int> vi;
typedef vector<pii> vpi;
typedef vector<pll> vpll;
typedef vector<vi> vvi;
typedef vector<vll> vvll;
typedef vector<bool> vb;
typedef vector<string> vs;

const ld pi = acos(-1);
const ll inf = (ll)1e9 + 10;
// const int mod=1000000007;
const int mod = 998244353;

int n, m, k;
const int N = 3e5 + 10;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  auto f = [&](int n) {
    int ans = 0;
    for (int i = 1; i * i <= n; i++) {
      if (n % i == 0) {
        if (i * i == n) {
          ans++;
        } else
          ans += 2;
      }
    }
    return ans;
  };
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    ans += f(i);
  }
  cout << ans << el;
  return 0;
}

#include <algorithm>
#include <array>
#include <assert.h>
#include <bitset>
#include <chrono>
#include <cmath>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <stdio.h>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

template <typename M, typename N>
istream &operator>>(istream &is, pair<M, N> &p) {
  is >> p.first >> p.second;
  return is;
}
template <typename M> istream &operator>>(istream &is, vector<M> &v) {
  for (auto &it : v)
    is >> it;
  return is;
}
template <typename M> istream &operator>>(istream &is, vector<vector<M>> &v) {
  for (auto &it : v)
    is >> it;
  return is;
}
template <typename M, typename N>
ostream &operator<<(ostream &os, const pair<M, N> &p) {
  os << p.fi << ' ' << p.se << '\\n';
  return os;
}
template <typename M> ostream &operator<<(ostream &os, const vector<M> &v) {
  for (auto it : v)
    os << it << ' ';
  cout << '\\n';
  return os;
}
template <typename M>
ostream &operator<<(ostream &os, const vector<vector<M>> &v) {
  for (auto it : v)
    os << it;
  return os;
}

#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define mn(x) *min_element((x).begin(), (x).end())
#define mx(x) *max_element((x).begin(), (x).end())
#define acc(x) accumulate((x).begin(), (x).end(), 0ll)
#define eb emplace_back
#define el '\\n'
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef vector<ll> vll;
typedef vector<int> vi;
typedef vector<pii> vpi;
typedef vector<pll> vpll;
typedef vector<vi> vvi;
typedef vector<vll> vvll;
typedef vector<bool> vb;
typedef vector<string> vs;

const ld pi = acos(-1);
const ll inf = (ll)1e9 + 10;
// const int mod=1000000007;
const int mod = 998244353;

int n, m, k;
const int N = 3e5 + 10;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  vll a(n);
  for (int i = 1; i < n; i++) {
    for (int j = i; j < n; j += i) {
      a[j]++;
    }
  }
  cout << acc(a) << el;
  return 0;
}


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

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

  for (int i = 1; i < n; i++) {
    int v = n - i;
    for (int j = 1; j < v + 1; j++) {
      if (v % j == 0)
        sum++;
    }
  }

  cout << sum << endl;
}

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

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

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


#include <bits/stdc++.h>
#define ll long long
#define vi vector<int>
#define vll vector<ll>
#define F first
#define S second
#define pb push_back
#define f(i, s, n) for (int i = (int)s; i <= (int)n; ++i)
#define Fast ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
using namespace std;
void solve() {
  ll n;
  cin >> n;
  ll k = n;
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    k = n - i;
    int cnt = 0;
    for (ll J = 1; J * J <= k; J++) {
      if (k % J == 0) {
        if (J != k / J) {
          cnt += 2;
        } else
          ++cnt;
      }
    }
    ans += (cnt);
  }
  cout << ans << '\\n';
}
int main() {
  Fast;
  //	int t;cin>>t;
  //	while(t--)
  solve();
}

#include <bits/stdc++.h>
#define ll long long
#define vi vector<int>
#define vll vector<ll>
#define F first
#define S second
#define pb push_back
#define f(i, s, n) for (int i = (int)s; i <= (int)n; ++i)
#define Fast ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
using namespace std;
const int N = 1000000;
void fns() {
  int k = 100;
  int cnt = 0;
  int ans = 0;
  for (ll i = 1; i * i <= k; i++) {
    if (k % i == 0) {
      if (i != k / i) {
        cnt += 2;
      } else
        ++cnt;
    }
  }
  ans += (cnt);
}
void solve() {
  ll n;
  cin >> n;
  ll k = n;
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    k = n - i;
    ll cnt = 0;
    ll temp = 1;
    for (ll j = 2; j * j <= k; ++j) {
      cnt = 0;
      if (k % j == 0) {
        while (k % j == 0)
          k /= j, ++cnt;
      }
      //	cout<<i<<" "<<j<<" "<<cnt<<"\\n"
      temp *= (cnt + 1);
    }
    if (k > 1)
      temp *= 2;
    ans += temp;
  }
  cout << ans << '\\n';
}
int main() {
  Fast;
  //	int t;cin>>t;
  //	while(t--)
  solve();
}


/* KYA CODEFORCES MERE BAS KI BAT NHI HAI  */

#include <algorithm>
#include <cmath>
#include <cstdint>
#include <cstring>
#include <initializer_list>
#include <iomanip>
#include <iostream>
#include <limits.h>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <stdlib.h>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

#define sze 1000005
#define ld long double
// #define ll unsigned long long
#define ll long long
#define endl "\\n"
#define pb push_back
#define mkp make_pair
#define mod 1000000007
#define ff first
#define ss second
#define F(i, a, b) for (int i = (int)(a); i <= (int)(b); i++)
#define RF(i, a, b) for (int i = (int)(a); i >= (int)(b); i--)
#define all(c) (c).begin(), (c).end()
#define pi pair<int, int>
#define pll pair<ll, ll>
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);

using namespace std;

// cout << fixed << setprecision(0) << pi <<" "<<npi<<endl;
// const ll inf=1ll<<60;
// const double pi = 3.14159265358979323846;

int main() {
  ll n;
  cin >> n;
  ll c = 0;
  while (n >= 2) {
    ll n1 = n;
    n1--;
    for (ll i = 1; i <= sqrt(n1); i++) {
      if (n1 % i == 0) {
        if (n1 / i != i) {
          c += 2;
        } else {
          c++;
        }
      }
    }
    n = n1;
  }
  cout << c << endl;
}

/* KYA CODEFORCES MERE BAS KI BAT NHI HAI  */

#include <algorithm>
#include <cmath>
#include <cstdint>
#include <cstring>
#include <initializer_list>
#include <iomanip>
#include <iostream>
#include <limits.h>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <stdlib.h>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

#define sze 1000005
#define ld long double
// #define ll unsigned long long
#define ll long long
#define endl "\\n"
#define pb push_back
#define mkp make_pair
#define mod 1000000007
#define ff first
#define ss second
#define F(i, a, b) for (int i = (int)(a); i <= (int)(b); i++)
#define RF(i, a, b) for (int i = (int)(a); i >= (int)(b); i--)
#define all(c) (c).begin(), (c).end()
#define pi pair<int, int>
#define pll pair<ll, ll>
#define IOS                                                                    \\
  ios::sync_with_stdio(0);                                                     \\
  cin.tie(0);                                                                  \\
  cout.tie(0);

using namespace std;

// cout << fixed << setprecision(0) << pi <<" "<<npi<<endl;
// const ll inf=1ll<<60;
// const double pi = 3.14159265358979323846;

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


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

typedef long long ll;
typedef unsigned long long int ull;
#define endl "\\n"
#define pb push_back
#define sq(a) (a) * (a)
#define all(x) (x).begin(), (x).end()
#define debug(x) cerr << #x << '=' << (x) << endl;
#define debugv(v)                                                              \\
  cerr << #v << " : ";                                                         \\
  for (auto x : v)                                                             \\
    cerr << x << ' ';                                                          \\
  cerr << endl;
#define MOD 1000000007
#define PI 3.141592653589793238
#define IOS                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);

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

ll exp(ll x, ll n, ll mod) {
  ll result = 1;
  while (n) {
    if (n & 1)
      result = (result * x) % mod;
    x = (x * x) % mod;
    n >>= 1;
  }
  return result;
}

int32_t main() {
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
  IOS

      ll n;
  cin >> n;

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

    ans += curr;
  }

  cout << ans << endl;

  return 0;
}

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

typedef long long ll;
typedef unsigned long long int ull;
#define endl "\\n"
#define pb push_back
#define sq(a) (a) * (a)
#define all(x) (x).begin(), (x).end()
#define debug(x) cerr << #x << '=' << (x) << endl;
#define debugv(v)                                                              \\
  cerr << #v << " : ";                                                         \\
  for (auto x : v)                                                             \\
    cerr << x << ' ';                                                          \\
  cerr << endl;
#define MOD 1000000007
#define PI 3.141592653589793238
#define IOS                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);

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

ll exp(ll x, ll n, ll mod) {
  ll result = 1;
  while (n) {
    if (n & 1)
      result = (result * x) % mod;
    x = (x * x) % mod;
    n >>= 1;
  }
  return result;
}

int32_t main() {
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
  IOS

      ll n;
  cin >> n;

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


#include <bits/stdc++.h>
using namespace std;
#define ALL(x) x.begin(), x.end()
#define rep(i, n) for (int i = 0; i < (n); i++)
#define debug(v)                                                               \\
  cout << #v << ":";                                                           \\
  for (auto x : v) {                                                           \\
    cout << x << ' ';                                                          \\
  }                                                                            \\
  cout << endl;
#define mod 1000000007
using ll = long long;
const int INF = 1000000000;
const ll LINF = 1001002003004005006ll;
int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1};
// ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}

struct IOSetup {
  IOSetup() {
    cin.tie(0);
    ios::sync_with_stdio(0);
    cout << fixed << setprecision(12);
  }
} iosetup;

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

template <typename T> ostream &operator<<(ostream &os, const vector<T> &v) {
  for (int i = 0; i < (int)v.size(); i++)
    os << v[i] << (i + 1 == (int)v.size() ? "" : " ");
  return os;
}

template <typename T1, typename T2>
istream &operator>>(istream &is, pair<T1, T2> &p) {
  is >> p.first >> p.second;
  return is;
}

template <typename T> istream &operator>>(istream &is, vector<T> &v) {
  for (T &x : v)
    is >> x;
  return is;
}

signed main() {
  ll n;
  cin >> n;
  ll res = 0;
  for (ll i = 1; i <= n; i++) {
    ll r = n - i;
    for (ll j = 1; j * j <= r; j++)
      if (r % j == 0) {
        res++;
        if (j != (r / j))
          res++;
      }
  }
  cout << res << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ALL(x) x.begin(), x.end()
#define rep(i, n) for (int i = 0; i < (n); i++)
#define debug(v)                                                               \\
  cout << #v << ":";                                                           \\
  for (auto x : v) {                                                           \\
    cout << x << ' ';                                                          \\
  }                                                                            \\
  cout << endl;
#define mod 1000000007
using ll = long long;
const int INF = 1000000000;
const ll LINF = 1001002003004005006ll;
int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1};
// ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}

struct IOSetup {
  IOSetup() {
    cin.tie(0);
    ios::sync_with_stdio(0);
    cout << fixed << setprecision(12);
  }
} iosetup;

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

template <typename T> ostream &operator<<(ostream &os, const vector<T> &v) {
  for (int i = 0; i < (int)v.size(); i++)
    os << v[i] << (i + 1 == (int)v.size() ? "" : " ");
  return os;
}

template <typename T1, typename T2>
istream &operator>>(istream &is, pair<T1, T2> &p) {
  is >> p.first >> p.second;
  return is;
}

template <typename T> istream &operator>>(istream &is, vector<T> &v) {
  for (T &x : v)
    is >> x;
  return is;
}

signed main() {
  ll n;
  cin >> n;
  vector<ll> c(n + 1, 0);
  for (ll a = 1; a <= n; a++) {
    for (ll b = 1; a * b <= n; b++) {
      c[a * b]++;
    }
  }

  ll res = 0;
  for (ll i = 1; i < n; i++)
    res += c[i];
  cout << res << endl;

  return 0;
}


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

int numof(int n) {
  // if(n==1) return 1;
  int ans = 0;
  for (int i = 1; i <= sqrt(n); ++i) {
    if (n % i == 0) {
      if (n / i == i)
        ans++;
      else
        ans += 2;
    }
  }
  return ans;
}

int main() {
  // cout<<numof(1)<<"\\n";
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; ++i) {
    ans += numof(i);
  }
  cout << ans << "\\n";
}

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

int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int i = 1; i < n; ++i) {
    int a, b;
    a = i;
    b = (n - 1) / a;
    ans += b;
  }
  cout << ans << "\\n";
}


#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;

int main() {
  int n;
  scanf("%d", &n);
  int cnt = 0;
  for (int i = 1; i < n; i++) {
    int j = n - i;
    for (int k = 1; k <= sqrt(j); k++) {
      if (k == sqrt(j)) {
        cnt++;
      } else if (j % k == 0) {
        cnt += 2;
      }
    }
  }
  printf("%d\\n", cnt);
  return 0;
}

#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;

int main() {
  int n;
  scanf("%d", &n);
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; i * j < n; j++) {
      cnt++;
    }
  }
  printf("%d\\n", cnt);
  return 0;
}


/////////////////////////////////TEST CASES////////////////////////////////////
/*
 */
/////////////////////////////////////CODE//////////////////////////////////////
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (ll i = (a); i < (b); i++)
#define FORD(i, a, b) for (ll i = a; i > b; i--)
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define PI 3.14159265
typedef long long ll;
#define vl vector<ll>
#define IN(inp)                                                                \\
  ll inp;                                                                      \\
  cin >> inp;
#define pb push_back
#define all(a) a.begin(), a.end()
#define FR(i, a) for (auto &i : a)
#define rvl(a, n)                                                              \\
  vl a;                                                                        \\
  FOR(i, 0, n) {                                                               \\
    IN(in);                                                                    \\
    a.pb(in);                                                                  \\
  }
#define what(A) cout << #A << " is " << A << endl;
ll MAX = 100000000000;
ll MOD = 1000000007;
void solve() {
  IN(n);
  ll cnt = 0;
  FOR(i, 1, n) {
    ll k = n - i;
    for (int j = 1; j * j <= k; j++) {
      if (k % j == 0) {
        cnt++;
        if (k / j != j) {
          cnt++;
        }
      }
    }
  }
  cout << cnt;
}
int main() {
  fastio
      // freopen("input.txt", "rt", stdin);
      // freopen("output.txt", "wt", stdout);
      ll test = 1;
  // cin >> test;
  while (test--) {
    solve();
  }
}

/////////////////////////////////TEST CASES////////////////////////////////////
/*
 */
/////////////////////////////////////CODE//////////////////////////////////////
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (ll i = (a); i < (b); i++)
#define FORD(i, a, b) for (ll i = a; i > b; i--)
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define PI 3.14159265
typedef long long ll;
#define vl vector<ll>
#define IN(inp)                                                                \\
  ll inp;                                                                      \\
  cin >> inp;
#define pb push_back
#define all(a) a.begin(), a.end()
#define FR(i, a) for (auto &i : a)
#define rvl(a, n)                                                              \\
  vl a;                                                                        \\
  FOR(i, 0, n) {                                                               \\
    IN(in);                                                                    \\
    a.pb(in);                                                                  \\
  }
#define what(A) cout << #A << " is " << A << endl;
ll MAX = 100000000000;
ll MOD = 1000000007;
void solve() {
  IN(n);
  ll cnt = 0;
  FOR(i, 1, n) {
    if (n % i != 0)
      cnt += n / i;
    else
      cnt += n / i - 1;
  }
  cout << cnt << endl;
}
int main() {
  fastio
      // freopen("input.txt", "rt", stdin);
      // freopen("output.txt", "wt", stdout);
      ll test = 1;
  // cin >> test;
  while (test--) {
    solve();
  }
}


#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int c = 1; c < n; c++) {
    int ab = n - c;
    for (int a = 1; a * a <= ab; a++) {
      if (ab % a == 0) {
        int b = ab / a;
        if (a == b) {
          ans++;
        } else {
          ans += 2;
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  int ans = 0;
  for (int a = 1; a * a <= n; a++) {
    for (int b = a; b <= n; b++) {
      int c = n - a * b;
      if (c > 0) {
        if (a == b)
          ans++;
        else
          ans += 2;
      }
    }
  }
  cout << ans << endl;
  return 0;
}


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

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

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

#define IOS                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
#define read freopen("in.txt", "r", stdin)
#define write freopen("out.txt", "w", stdout)
#define loop(i, a, b) for (ll i = a; i <= b; i++)
#define rloop(i, a, b) for (ll i = a; i >= b; i--)
#define ms(a, x) memset(a, x, sizeof a)
#define ll long long int
#define ff first
#define ss second
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define pb push_back
#define nl cout << "\\n"
#define gcd(a, b) __gcd((a), (b))
#define lcm(a, b) ((a) * (b)) / (gcd(a, b))
#define sq(a) (a) * (a)
#define sz(a) a.size()
#define mod 1000000007
#define PI 2 * acos(0.0)
ll countDivisors(ll n) {
  ll cnt = 0;
  for (ll 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() {
  IOS int T = 1;
  // cin>>T;
  while (T--) {
    ll n;
    cin >> n;
    ll ans = 0;
    loop(i, 1, n - 1) {

      ll y = countDivisors(n - i);
      ans += y;
    }
    cout << ans;
  }
  return 0;
}

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

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

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

#define IOS                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
#define read freopen("in.txt", "r", stdin)
#define write freopen("out.txt", "w", stdout)
#define loop(i, a, b) for (int i = a; i <= b; i++)
#define rloop(i, a, b) for (ll i = a; i >= b; i--)
#define ms(a, x) memset(a, x, sizeof a)
#define ll long long int
#define ff first
#define ss second
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define pb push_back
#define nl cout << "\\n"
#define gcd(a, b) __gcd((a), (b))
#define lcm(a, b) ((a) * (b)) / (gcd(a, b))
#define sq(a) (a) * (a)
#define sz(a) a.size()
#define mod 1000000007
#define PI 2 * acos(0.0)
vector<int> spf(1000005);

vector<int> modified_sieve(int n) {
  for (int i = 1; i <= n; i++)
    spf[i] = i;
  vector<int> primes;
  for (int i = 2; i * i <= n; i++)
    if (spf[i] == i)
      for (int j = i + i; j <= n; j += i)
        if (spf[j] == j)
          spf[j] = i;
  for (int i = 2; i <= n; i++)
    if (spf[i] == i)
      primes.push_back(i);
  return primes;
}

vector<int> factorize(int x) {
  vector<int> res;
  while (x > 1) {
    res.push_back(spf[x]);
    x /= spf[x];
  }
  return res;
}
int main() {
  IOS int T = 1;
  // cin>>T;
  while (T--) {
    int n;
    cin >> n;
    vector<int> a = modified_sieve(n), b = factorize(n);
    int ans = 0;
    loop(i, 1, n - 2) {

      vector<int> y = factorize(n - i);
      int t = 1;
      map<int, int> m;
      loop(j, 0, sz(y) - 1) m[y[j]]++;
      for (auto p : m)
        t *= (p.ss + 1);
      ans += t;
    }
    cout << ans + 1;
  }
  return 0;
}