#include "bits/stdc++.h"

using namespace std;

#define pi               acos(-1)
#define inc(a)           a.begin(), a.end()
#define dec(a)           a.rbegin(), a.rend()
#define Unique(n)        (n).erase(unique(inc(n)), (n).end())
#define what_is(x)       cerr << #x << " is " << x << '\n';
#define to(i, a, n)      for(ll i=a; i<=n; i++)
#define fr(i, a, n)      for(int i=a; i>=n; i--)
#define read(arr, l, r)  for(int i=l; i<r; cin >> arr[i++])
#define prnt(arr, l, r)  for(int i=l; i<r; cout << arr[i++] << " \n"[i==r])

typedef long long ll;
typedef long double ld;

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

ll n, res, l, r, mid, sum;
ll check(ll x, ll y, ll ans = 0){
    x--;
    if(x & 1) ans = - ((x + 1) / 2) * x;
    else ans = - (x + 1) * (x / 2);
    if(y & 1) ans += ((y + 1) / 2) * y;
    else ans += (y + 1) * (y / 2);

    return  ans;
}

bool bin(ll x){
    l = 1, r = n/x + 1;
    while (l <= r){
        mid = (l+r) / 2;
        sum = check(mid, mid+x-1);
        if(sum == n) return true;
        else if(sum > n) r = mid-1;
        else l = mid+1;
    }
    return false;
}

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

    cin >> n;
    to(i, 1, 10000000)
        if(bin(i)) res += 2;

    cout << res;

    return 0;
}
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
//using namespace __gnu_pbds;
#define fst ios_base::sync_with_stdio(false);cin.tie(0), cout.tie(0);
#define pb                            push_back
#define mp                            make_pair
#define gcd                           __gcd
#define f                             first
#define s                             second
#define mm(arr)                       memset(arr, 0, sizeof(arr))
#define scanArray(a,n)                for(int i = 0; i < n; i++){cin >> a[i];}
#define coutArray(a,n)                for(int i = 0; i < n; i++){cout << a[i] << " ";};cout << endl;
#define mod                           1000000007
typedef long long ll;
//typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; 
int fact(int n);
int nCr(int n, int r)  {return fact(n) / (fact(r) * fact(n - r));}
int fact(int n){
    int res = 1;
    for (int i = 2; i <= n; i++)
        res = res * i;
    return res;
}
bool isPrime(int n){
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;


    if (n % 2 == 0 || n % 3 == 0)
        return false;

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

void solve(){
	int k;
	cin >> k;
	int ans = 0;

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

    
}
//const int k = 2e5 + 5;
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
    #endif

    int t = 1;
   // cin >> t;
    while(t--){
        solve();
    }
    return 0;
}	