#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
//#include <boost/math/common_factor.hpp> 
#include<bits/stdc++.h>
using namespace std;
template<class T1,class T2>
ostream& operator << (ostream& out,pair<T1,T2> p)
{
	out<<p.first<<' '<<p.second;
	return out;
}
 
template<class T1,class T2>
istream& operator >> (istream& in,pair<T1,T2> &p)
{
	in>>p.first>>p.second;
	return in;
}
 
template<class T>
istream& operator >> (istream& in,vector<T> &v)
{
	for(auto &x:v)
		in>>x;
	return in;
}
 
template<class T>
ostream& operator << (ostream& out,vector<vector<T>> &v)
{
	for(auto &x:v)
		out<<x<<'\n';
	return out;
}
 
template<class T>
ostream& operator << (ostream& out,vector<T> &v)
{
	for(auto x:v)
		out<<x<<' ';
	return out;
}
 
#define ll long long
#define all(sdk) sdk.begin(),sdk.end()
#define mll map<int, int>
#define pb push_back
#define rep(i,a,b) for(int i=a;i<b;++i)
#define repd(i,a,b) for(int i=a;i>=b;--i)
#define mp make_pair
#define hell 1000000007
#define endl '\n'
#define vvll vector<vector<int> >
#define vll vector<int>
#define mint map<int,int> 
#define sz(x) (int)x.size()
#define sll set<int>
#define pii pair<int,int>
#define F first
#define S second
#ifndef ONLINE_JUDGE
#define deb(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
#define deb(x...)
#endif
// typedef tree<
// int,
// null_type,
// less<int>,
// rb_tree_tag,
// tree_order_statistics_node_update>
// ordered_set;
#define maxn 200005
#define ios ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
// int pow(int a, int b, int m)
// {
// 	int ans=1;
// 	while(b)
// 	{
// 		if(b&1)
// 			ans=(ans*a)%m;
// 		b/=2;
// 		a=(a*a)%m;
// 	}
// 	return ans;
// }
 
// int fact[N], invfact[N];
 
// int modinv(int k)
// {
// 	return pow(k, MOD-2, MOD);
// }
 
// void precompute()
// {
// 	fact[0]=fact[1]=1;
// 	for(int i=2;i<N;i++)
// 	{
// 		fact[i]=fact[i-1]*i;
// 		fact[i]%=MOD;
// 	}
// 	invfact[N-1]=modinv(fact[N-1]);
// 	for(int i=N-2;i>=0;i--)
// 	{
// 		invfact[i]=invfact[i+1]*(i+1);
// 		invfact[i]%=MOD;
// 	}
// }
 
// int nCr(int x, int y)
// {
// 	if(y>x)
// 		return 0;
// 	int num=fact[x];
// 	num*=invfact[y];
// 	num%=MOD;
// 	num*=invfact[x-y];
// 	num%=MOD;
// 	return num;
// }
bool isPrime(ll n) 
{ 
    // Corner cases 
    if (n <= 1) 
        return false; 
    if (n <= 3) 
        return true; 
  
    // This is checked so that we can skip 
    // middle five numbers in below loop 
    if (n % 2 == 0 || n % 3 == 0) 
        return false; 
  
    for (int i = 5; i * i <= n; i = i + 6) 
        if (n % i == 0 || n % (i + 2) == 0) 
            return false; 
  
    return true; 
} 
long long power(long long x, long long int y, long long mod) { 
    long long res = 1; 
    while (y > 0) { 
        if (y & 1) 
            res = (res*x)%mod; 
        y = y >> 1; 
        x =(x*x)%mod; 
    } 
    return res; 
}
int main()
{
    ios;
    int n,x;
    cin >> n;
    map<int,int>m;
    rep(i,1,n+1)
    {
        if (i*i>=n)
        continue;
        rep(j,1,n+1)
        {
            if (i*i+j*j+i*j>=n)
            break;
            rep(k,1,n+1)
            {
                x=i*i+j*j+k*k+i*j+j*k+i*k;
                //cout << x<<endl;
              	if (x>n)
                {
                    break;
                }
                m[x]++;
                
            }
        }
    
    }
    rep(i,1,n+1)
    cout << m[i]<<endl;
    return 0;
}


Measured memory_bytes: 3972