#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a),i##end=(b);i<=i##end;i++)
#define per(i,a,b) for(int i=(a),i##end=(b);i>=i##end;i--)
#define mem(a,b) memset(a,b,sizeof(a))
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ll long long
using namespace std;
template<typename T>void cmax(T&x,T y){if(x<y)x=y;}
template<typename T>void cmin(T&x,T y){if(x>y)x=y;}
inline int read(){
	int f=1,x=0;
	char ch=getchar();
	while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
	return f*x;
}
int a,b,c; 
int main(){
	a=read(),b=read(),c=read();
	int t=min(min(a,b),c);
	printf("%d",a+b+c-t);
}

#include<bits/stdc++.h>
#include<chrono>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace std::chrono;
using namespace __gnu_pbds;
#define ll long long int
#define ull unsigned long long int
#define FOR(I,a,b) for(ll I=a;I<b;I++)
#define FORit(it,a) for(auto it=a.begin();it!=a.end();it++)
#define ROF(I,a,b) for(int I=a;I>=b;I--)
#define vec vector
#define vi vec<int>
#define vll vec<ll>
#define pb push_back
#define pp pop_back
#define all(x) x.begin(),x.end()
#define testcases ll tc;cin>>tc;while(tc--)
#define mem(a,k) memset(a,k,sizeof(a))
#define FF first
#define SS second
#define MP(x,y) make_pair(x,y)
#define rt return
#define br break
#define ct continue
#define elif else if
#define ii pair<ll,ll>
#define vecin(a,n,index) for(int I=index;I<n;I++)cin>>a[I]
#define vecout(a,n,index) for(int I=index;I<n;I++)cout<<a[I]<<" ";cout<<endl;
template<class T> using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template<class T> using omset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
// ll mod = 1000000007;
// int max_size = 1000001;
// vi sv(max_size, 1);
// vi primes;
// void sieve();
// ll power(ll a, ll b);
// ll powerMod(ll a, ll b, ll mod);
// ll modIn(ll n);
// vll fact(200001);

vec<ii> factorize(ll k) {
	vec<ii> v;
	for (int i = 2; i * i <= k; i++) {
		if (k % i == 0) {
			int cnt = 0;
			while (k % i == 0) {
				k /= i;
				cnt++;
			}
			v.pb({i, cnt});
		}
	}
	if (k > 1)v.pb({k, 1});
	rt v;
}
void solve() {
	ll k;
	cin >> k;
	ll res = 0;
	FOR(i, 1, k + 1) {
		vec<ii> v = factorize(i);
		ll tmp = 1;
		for (auto p : v) {
			tmp *= ((p.SS + 2) * 1ll * (p.SS + 1)) / 2;
		}
		res += tmp;
	}
	cout << res << endl;
}
int main() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	// testcases
	solve();
}



/*void sieve() {
	sv[0] = 0; sv[1] = 0;
	for (int i = 2; i * i <= max_size; i++) {
		if (sv[i]) {
			for (int j = i * i ; j <= max_size; j += i) {
				sv[j] = 0;
			}
		}
	}
}*/

/*ll power(ll a , ll b) {
	ll res = 1;
	while (b) {
		if (b % 2) {res *= a; b--;}
		else {a *= a; b /= 2;}
	}
	rt res;
}*/
/*
ll powerMod(ll a, ll b, ll mod) {
	ll res = 1;
	while (b != 0) {
		if (b % 2) {
			res = (res % mod * a % mod) % mod;
			b--;
		}
		else {
			a = (a % mod * a % mod) % mod;
			b /= 2;
		}
	}
	rt res % mod;
}*/
/*
ll modIn(ll n) {rt powerMod(n, mod - 2) % mod;}
*/