#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
 
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;
 
typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;
 
typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;
 
#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define F0R(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
#define trav(a,x) for (auto& a : x)
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)
 
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define ins insert

template<class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
const int MOD = 1000000007;
const char nl = '\n';
const int MX = 100001; //check the limits, dummy

ll read() {
    ll K = 0;
    string S; cin >> S;
    int cnt = 0;
    bool found = false;
    bool neg = false;
    trav(a, S) {
        if (a == '.') {
            found = true; continue;
        } else if (a == '-') {
            neg = true; continue;
        }
        if (found) cnt++;

        K *= 10; K += a - '0';
    }
    FOR(i, cnt, 4) K *= 10;
    if (neg) K *= -1;
    return K;
}

void solve() {

    ll X = read(), Y = read(), R = read();
    R *= R;
    ll ans = 0;
    for (ll x = -2000000000; x <= 2000000000; x += 10000) {
        ll lo = Y, hi = 2000000000;
        assert(lo < hi);
        ll G = (X-x)*(X-x);
        if (G > R) continue;
        while (lo < hi) {
            ll mid = lo + (hi-lo+1)/2;
            if ((Y-mid)*(Y-mid) <= R-G) {
                lo = mid;
            } else {
                hi = mid-1;
            }
        }
        ll upB = lo;
        lo = -2000000000;
        hi = Y;
        assert(lo < hi);
        while (lo < hi) {
            ll mid = lo + (hi-lo)/2;
            if ((Y-mid)*(Y-mid) <= R-G) {
                hi = mid;
            } else {
                lo = mid+1;
            }
        }
        ll loB = lo;
        loB += 1e12; upB += 1e12;
        assert(loB >= 0); assert(upB >= 0);
        loB = (loB + 9999) / 10000;
        upB = upB / 10000;
        assert(upB - loB + 1 >=0);
        ans += upB - loB + 1;
    }
    cout << ans << nl;

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

    int T = 1;
//    cin >> T;
    while(T--) {
        solve();
    }

	return 0;
}
 
// read the question correctly (ll vs int)
// template by bqi343


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

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n, k; cin >> n >> k;
	auto count_pairs = [&](int x) {
		if (x <= 1 || x > 2 * n) return 0LL;
		return (long long) (x - 1) / 2 * 2 + (x - 1) % 2 - max(0, (x - n - 1) * 2);
	};
	long long ans = 0;
	for (int x = 2; x <= 2 * n; ++x)
		ans += (long long) count_pairs(x) * count_pairs(x - k);
	cout << ans << '\n';
	return 0;
}