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