def calc(n):

    ret = 0

    for x in range(1, 10 ** 2 + 1):

        for y in range(x, 10 ** 2 + 1):

            rest = n - x * x - y * y - x * y  # z*(x+y+z)

            if rest < 0: break

            for z in range(y, 10 ** 2):

                t = z * (x + y + z)

                if t > rest: break

                if t == rest:

                    if x == y == z:

                        ret += 1

                    elif x == y or y == z or z == x:

                        ret += 3

                    else:

                        ret += 6

                    break

    return ret





def main():

    N = int(input())



    ans = []

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

        ans.append(calc(n))



    print(*ans, sep='\n')





if __name__ == '__main__':

    main()



# import sys

# input = sys.stdin.readline

# 

# sys.setrecursionlimit(10 ** 7)

# 

# (int(x)-1 for x in input().split())

# rstrip()

#

# def binary_search(*, ok, ng, func):

#     while abs(ok - ng) > 1:

#         mid = (ok + ng) // 2

#         if func(mid):

#             ok = mid

#         else:

#             ng = mid

#     return ok

def main():

    MX = 10 ** 2

    

    N = int(input())



    ctr = [0] * (N + 1)

    for x in range(1, MX + 1):

        for y in range(1, MX + 1):

            for z in range(1, MX + 1):

                t = x * x + y * y + z * z + x * y + y * z + z * x

                if t <= N:

                    ctr[t] += 1



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





if __name__ == '__main__':

    main()

def calc(n):
    ret = 0
    for x in range(1, 10**2 + 1):
        for y in range(x, 10**2 + 1):
            rest = n - x * x - y * y - x * y  # z*(x+y+z)
            if rest < 0:
                break
            for z in range(y, 10**2):
                t = z * (x + y + z)
                if t > rest:
                    break
                if t == rest:
                    if x == y == z:
                        ret += 1
                    elif x == y or y == z or z == x:
                        ret += 3
                    else:
                        ret += 6
                    break
    return ret


def main():
    N = int(input())
    ans = []
    for n in range(1, N + 1):
        ans.append(calc(n))
    print(*ans, sep="\n")


if __name__ == "__main__":
    main()
# import sys
# input = sys.stdin.readline
#
# sys.setrecursionlimit(10 ** 7)
#
# (int(x)-1 for x in input().split())
# rstrip()
#
# def binary_search(*, ok, ng, func):
#     while abs(ok - ng) > 1:
#         mid = (ok + ng) // 2
#         if func(mid):
#             ok = mid
#         else:
#             ng = mid
#     return ok

def main():
    MX = 10**2
    N = int(input())
    ctr = [0] * (N + 1)
    for x in range(1, MX + 1):
        for y in range(1, MX + 1):
            for z in range(1, MX + 1):
                t = x * x + y * y + z * z + x * y + y * z + z * x
                if t <= N:
                    ctr[t] += 1
    print(*ctr[1:], sep="\n")


if __name__ == "__main__":
    main()

-def calc(n): -    ret = 0 -    for x in range(1, 10**2 + 1): -        for y in range(x, 10**2 + 1): -            rest = n - x * x - y * y - x * y  # z*(x+y+z) -            if rest < 0: -                break -            for z in range(y, 10**2): -                t = z * (x + y + z) -                if t > rest: -                    break -                if t == rest: -                    if x == y == z: -                        ret += 1 -                    elif x == y or y == z or z == x: -                        ret += 3 -                    else: -                        ret += 6 -                    break -    return ret - - +    MX = 10**2 -    ans = [] -    for n in range(1, N + 1): -        ans.append(calc(n)) -    print(*ans, sep="\n") +    ctr = [0] * (N + 1) +    for x in range(1, MX + 1): +        for y in range(1, MX + 1): +            for z in range(1, MX + 1): +                t = x * x + y * y + z * z + x * y + y * z + z * x +                if t <= N: +                    ctr[t] += 1 +    print(*ctr[1:], sep="\n") -# import sys -# input = sys.stdin.readline -# -# sys.setrecursionlimit(10 ** 7) -# -# (int(x)-1 for x in input().split()) -# rstrip() -# -# def binary_search(*, ok, ng, func): -#     while abs(ok - ng) > 1: -#         mid = (ok + ng) // 2 -#         if func(mid): -#             ok = mid -#         else: -#             ng = mid -#     return ok