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 PyPy3 (7.3.0) (judge verdict: Time Limit Exceeded)

import itertools
import math

def A(n):
    return [i**2 for i in range(2, int(math.sqrt(2*n))) if i**2 <= n-8]

N  = int(input())


count = 0

array = A(2*N)

for n in range(1, N+1):
    # print(f"n = {n}")
    count = 0
    for a in array:
        for b in array:
            c = 2*n - (a + b)
            if(c >= 4 and c <= 2*n-8 and (c ** .5).is_integer()):
                X = math.sqrt(a)
                Y = math.sqrt(b)
                Z = math.sqrt(c)
                x = (X-Y+Z)/2
                y = (X+Y-Z)/2
                z = (-X+Y+Z)/2
                if(x.is_integer() and y.is_integer() and z.is_integer()):
                    if(x >= 1 and y >= 1 and z >= 1):
                        count += 1
    print(count)