N, D = gets.split.map(&:to_i) M = 2*(N**2) cxy = [0]*(M+1) cwz = [0]*(M+1) 1.upto(N) do |i| i2 = i**2 1.upto(N) do |j| j2 = j**2 cxy[i2 + j2] += 1 wz = i2 - j2 + D cwz[wz] += 1 if 0 < wz && wz <= M end end sum = 0 2.upto(M){|i| sum += cxy[i] * cwz[i] } puts sum