#from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

from fractions import gcd

from itertools import combinations,permutations,accumulate # (string,3) 3回

#from collections import deque

from collections import deque,defaultdict,Counter

import decimal

import re

#import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7

#mod = 9982443453

def readInts():

  return list(map(int,input().split()))

def I():

  return int(input())

n = I()

dp = [0] * (500000)

for x in range(1,101):

    for y in range(1,101):

        for z in range(1,101):

            pe = x**2 + y**2 + z**2 + x*y + y*z + z*x

            dp[pe] += 1

print(*dp[1:n+1],sep='\n')

#from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

from fractions import gcd

from itertools import combinations,permutations,accumulate # (string,3) 3回

#from collections import deque

from collections import deque,defaultdict,Counter

import decimal

import re

#import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#

# my_round_int = lambda x:np.round((x*2 + 1)//2)

# 四捨五入

import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7

#mod = 9982443453

def readInts():

  return list(map(int,input().split()))

def I():

  return int(eval(input()))

NUM = [0] * 500000

for x in range(1,101):

    for y in range(1,101):

        for z in range(1,101):

            nya = x**2 + y**2 + z**2 + x*y + y*z + z*x

            NUM[nya] += 1

n = I()

for i in range(1,n+1):

    print((NUM[i]))

# from statistics import median
# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from fractions import gcd
from itertools import combinations, permutations, accumulate  # (string,3) 3回

# from collections import deque
from collections import deque, defaultdict, Counter
import decimal
import re

# import bisect
#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7
# mod = 9982443453
def readInts():
    return list(map(int, input().split()))


def I():
    return int(input())


n = I()
dp = [0] * (500000)
for x in range(1, 101):
    for y in range(1, 101):
        for z in range(1, 101):
            pe = x**2 + y**2 + z**2 + x * y + y * z + z * x
            dp[pe] += 1
print(*dp[1 : n + 1], sep="\n")

# from statistics import median
# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from fractions import gcd
from itertools import combinations, permutations, accumulate  # (string,3) 3回

# from collections import deque
from collections import deque, defaultdict, Counter
import decimal
import re

# import bisect
#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
# my_round_int = lambda x:np.round((x*2 + 1)//2)
# 四捨五入
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7
# mod = 9982443453
def readInts():
    return list(map(int, input().split()))


def I():
    return int(eval(input()))


NUM = [0] * 500000
for x in range(1, 101):
    for y in range(1, 101):
        for z in range(1, 101):
            nya = x**2 + y**2 + z**2 + x * y + y * z + z * x
            NUM[nya] += 1
n = I()
for i in range(1, n + 1):
    print((NUM[i]))

+# my_round_int = lambda x:np.round((x*2 + 1)//2) +# 四捨五入 -    return int(input()) +    return int(eval(input())) -n = I() -dp = [0] * (500000) +NUM = [0] * 500000 -            pe = x**2 + y**2 + z**2 + x * y + y * z + z * x -            dp[pe] += 1 -print(*dp[1 : n + 1], sep="\n") +            nya = x**2 + y**2 + z**2 + x * y + y * z + z * x +            NUM[nya] += 1 +n = I() +for i in range(1, n + 1): +    print((NUM[i]))