#include #include #include #include #include #include #include #include #include #include #include #include #include //#include #define ll long long #define rep(i, n) for(ll i = 0; i < n; i++) using namespace std; //using namespace atcoder; const ll INF = 2000000000000000000LL; /* ll gcd(ll a, ll b){ //log max(a,b) if (a % b == 0){ return(b); } else{ return(gcd(b, a % b)); } } ll lcm(ll a, ll b){ return a * b / gcd(a, b); } */ //gcd lcm /* class UnionFind { public: vector par; void init(ll sz) { par.resize(sz, -1); } ll root(ll pos) { if (par[pos] == -1) return pos; par[pos] = root(par[pos]); return par[pos]; } void unite(ll u, ll v) { u = root(u); v = root(v); if (u == v) return; par[u] = v; } bool same(ll u, ll v) { if (root(u) == root(v)) return true; return false; } }; */ typedef pair P; int main(){ ll n; cin >> n; ll ans = 0; for (ll y = 1; y*y < n*n; y++) { ll a = n * n - y * y; double sa = sqrt(a); ll saint = (ll)sa; if (sa-saint==0) ans++; } cout << ans << endl; }