#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using vi = vector; using vii = vector; using vs = vector; using vss = vector; using vb = vector; using vbb = vector; using ii = pair; using vpi = vector; using vpii = vector; using ll = long long; using vll = vector; using vvll = vector; using table = unordered_map; using pll = pair; using vpl = vector; using vpll = vector; #define f first #define s second #define forn(i, n) for(int i = 0; i < n; i++) #define fore(i, a, b) for(int i = a; i <= b; i++) #define for1n(i, n) for(int i = 1; i <= n; i++) #define rof(i, n) for(int i = n-1; i >= 0; i--) #define rofe(i, a, b) for(int i = b; i >= a; i--) #define all(x) x.begin(), x.end() #define dsc(type) greater #define Flag cout << "Reached here.\n" #define FASTIO ios::sync_with_stdio(0); cin.tie(0); #define pb push_back #define pbb pop_back #define sz size #define rsz resize #define rsv reserve #define ins insert #define lb(a, val) lower_bound(all(a), val); #define ub(a, val) upper_bound(all(a), val); #define onec(x) __builtin_popcount(x) #define end0(x) __builtin_clz(x) #define beg0(x) __builtin_ctz(x) #define MAX 1000000005 #define MIN -MAX #define mod 1000000007LL #define clr(x, y) memset(x, y, sizeof(x)) template bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; } template bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } int dx[] = {0, 1, -1, 0}; int dy[] = {1, 0, 0, -1}; void init() { #ifndef ONLINE_JUDGE freopen("output.txt", "w", stdout); freopen("input.txt", "r", stdin); #endif } ll binpow(ll a, ll b) { a %= mod; ll res = 1; while (b > 0) { if (b & 1) res *= a, res %= mod; a *= a, a %= mod; b >>= 1; } return res; } vi fct(ll n) { vi fac; while(n%2 == 0) n /= 2, fac.pb(2); for(int i = 3; i * i <= n; i += 2) while(n%i == 0) fac.pb(i), n /= i; if(n > 1) fac.pb(n); return fac; } ll gcd(ll a, ll b) { if (b == 0) return a; return gcd(b, a % b); } ll lcm(ll a, ll b) { return (a*b) / gcd(a, b); } using lll = __int128; void solve() { ll a, b, s; cin >> a >> b >> s; auto rsm = [&](lll l, lll r) -> lll { // l--; // cout << r << ' ' << ((r*(r+1))/2) << ' ' << l << ' ' << ((l*(l+1))/2) << '\n'; return ((r*(r+1))/2) - ((l*(l+1))/2); }; lll ans = 0; for(lll i = 1; i <= min(s, a); i++) { lll d = min((lll) b, s/i); lll cur = (rsm(b-d, b)) * (a-i+1); // cout << d << ' ' << (ll) rsm(b-d, b) << ' ' << (ll) (a-i+1) << '\n'; ans += cur; } cout << (unsigned long long) ans << '\n'; } int main() { //Sublime // init(); // FASTIO // Flag; solve(); }