public class Euler804 {
    static long isqrt(long n) {
        if (n < 0)
            return 0;
        long r = (long) Math.sqrt(n);
        while ((r + 1) * (r + 1) <= n && (r + 1) > r) {
            r++;
        }
        while (r * r > n) {
            r--;
        }
        return r;
    }

    public static String solve(long N) {
        long yMax = isqrt((4L * N) / 163L);
        long total = 0;

        for (long y = -yMax; y <= yMax; ++y) {
            long yy = Math.abs(y);
            long rem = 4L * N - 163L * yy * yy;
            if (rem < 0)
                continue;
            long m = isqrt(rem);

            long cnt;
            if ((y % 2) == 0) {
                cnt = (m % 2 == 0) ? (m + 1) : m;
            } else {
                cnt = (m % 2 == 0) ? m : (m + 1);
            }

            total += cnt;
        }

        return Long.toString(total - 1);
    }

    public static void main(String[] args) {
        System.out.println(solve(10000000000000000L));
    }
}
