#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int MAX_N = 2000; const int MAX_D = 1000000; ll cnt1[2 * MAX_N * MAX_N + 10]; ll cnt2[2 * MAX_N * MAX_N + 10]; int main() { int N, D; cin >> N >> D; memset(cnt1, 0, sizeof(cnt1)); memset(cnt2, 0, sizeof(cnt2)); for (int x = 1; x <= N; ++x) { for (int y = 1; y <= N; ++y) { int v = x * x + y * y; cnt1[v]++; } } for (int w = 1; w <= N; ++w) { for (int z = 1; z <= N; ++z) { int v = w * w - z * z + D; if (v <= 0) continue; cnt2[v]++; } } ll ans = 0; for (int v = 1; v <= 2 * N * N; ++v) { ans += cnt1[v] * cnt2[v]; } cout << ans << endl; return 0; }