Problem:
Score : 300 points

Problem Statement

Let f(n) be the number of triples of integers (x,y,z) that satisfy both of the following conditions:

1 \leq x,y,z

x^2 + y^2 + z^2 + xy + yz + zx = n

Given an integer N, find each of f(1),f(2),f(3),\ldots,f(N).

Constraints

All values in input are integers.

1 \leq N \leq 10^4

Input

Input is given from Standard Input in the following format:

N

Output

Print N lines. The i-th line should contain the value f(i).

Sample Input 1

20

Sample Output 1

0
0
0
0
0
1
0
0
0
0
3
0
0
0
0
0
3
3
0
0

For n=6, only (1,1,1) satisfies both of the conditions. Thus, f(6) = 1.

For n=11, three triples, (1,1,2), (1,2,1), and (2,1,1), satisfy both of the conditions. Thus, f(6) = 3.

For n=17, three triples, (1,2,2), (2,1,2), and (2,2,1), satisfy both of the conditions. Thus, f(17) = 3.

For n=18, three triples, (1,1,3), (1,3,1), and (3,1,1), satisfy both of the conditions. Thus, f(18) = 3.

Solution in Ruby (2.7.1) (judge verdict: Time Limit Exceeded)

n = gets.chomp.to_i
y = 1
z = 1
count = 0
# 99.downto (1) do |x|
#     1.upto (99) do |y|
#         ans = x ** 2 + y ** 2 + z ** 2 + x * y + y *z + z *x
#         xy = x + y
#         all =n -  x ** 2 - y ** 2  - x * y
#         while true
#             zxy = z ** 2 + z * (x +y)
#             if zxy == all
#                 count += 1
#                 break
#             end
#             z += 1
#         end


#     end
# end
#count = 0

(1..n).each do |i|
#i = 6
    count = 0
    max = (i ** 0.5).ceil
    #p max
    max.downto (1) do |x|
        1.upto  (max) do |y|
            z = 1
            if x >= y
                all = i  -  x ** 2 - y ** 2  - x * y
                zz =  z ** 2 + z * x +z * y
                # if x == 1 && y == 1
                # puts "UU"
                #  p x
                #  p y
                #  p all
                #  p zz
                #  puts "HH"
                # end
                #puts "HH"
                zzz = (zz ** 0.5).ceil
                until z > y || z > zzz   
                    if all == zz && x != y && y != z
                        count += 6
                        break
                    elsif all == zz && x == y && y != z
                        count += 3
                        break
                    elsif all == zz && x != y && y == z
                        count += 3
                        break
                    elsif  all == zz && x == y && y == z
                        count += 1
                        break
                    end
                    z += 1
                    #p z
                end
            elsif x < y
                break
            
            end
        end
    end



    puts count
end