#include<bits/stdc++.h>
using namespace std;

# define C continue;
# define R return

# define D double
# define I insert
# define ll long long
# define ld long double

# define ull unsigned long long
# define ui unsigned int

# define pb push_back
# define pf push_front

# define vi vector < int >
# define vc vector < char >
# define vs vector < string >
# define vb vector < bool >
# define vd vector < D >
# define vll vector < ll >
# define vull vector < ull >
# define vld vector < ld >
# define PQ priority_queue

# define vvi vector < vector < int > >
# define vvb vector < vector < bool > >
# define vvc vector < vector < char > >
# define vvs vector < vs >
# define vvll vector < vector < ll > >
# define vvd vector < vector < D > >
# define vvld vector < vector < ld > >

# define all(v) (v).begin() , (v).end()
# define allrev(v) (v).rbegin() , (v).rend()
# define allcomp(v) v.begin() , v.end() , comp
# define allrevcomp(v) v.rbegin() , v.rend() , comp

# define pii pair < int , int >
# define pll pair < ll , ll >
# define pld pair < ld , ld >
# define pDD pair < D , D >

# define vpld vector < pld >
# define vpii vector < pii >
# define vpll vector < pll >
# define vpDD vector < pDD >

# define vvpii vector < vector < pii > >
# define F first
# define S second
# define mp make_pair

# define dist(a,b,p,q) sqrt((p-a)*(p-a) + (q-b)*(q-b))

# define pp(n) printf("%.10Lf",n);
# define line cout<<"\n";
# define fast ios_base::sync_with_stdio(false) ; cin.tie(0) ; cout.tie(0);

string vow = "aeiou";
int month[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

const int dxhorse[] = {-2, -2, -1, -1, 1, 1, 2, 2};
const int dyhorse[] = {1, -1, 2, -2, 2, -2, 1, -1};

const int dx[] = { -1 , 0 , 1 , 0 } ;
const int dy[] = { 0 , 1 , 0 , -1 } ;

const ld pie = 3.1415926535897932384626 ;
const ll mod = 1e9 + 7 ;

/// Tip : If a and b are positive integers ; we may say - ceil (a/b) = 1 + floor ( (a-1)/b ) .

int n ;

int f ( int a , int b , int c )
{
    int d = b*b - 4*a*c ;
    if ( d < 0 )
        return -12 ;

    int temp_d = sqrt ( d ) ;

    bool ok = false ;
    int root = -12 ;

//    if ( n == 3 )
//    {
//        cout << "a : " << a << " and b : " << b << " and c : " << c << " and d : " << d ; line ;
//    }

    for ( int del = -2 ; del < 3 ; del ++ )
    {
        int temp = temp_d + del ;
        if ( temp * temp == d )
        {
            ok = true ;
            root = temp ;

            break ;
        }
    }

    if ( ok == false )
        return -12 ;

    if ( (root - b) % 2 == 0 )
    {
        int z = root - b ;
        z >>= 1 ;

        return z ;
    }

    return -12 ;
}

void solve ( int test_case )
{
    int nn ;
    cin >> nn ;

    for ( n = 1 ; n <= nn ; n ++ )
    {
        int maxx = sqrt ( n ) + 3 ;
        ll ans = 0 ;

        for ( int x = 1 ; x <= maxx ; x ++ )
        {
            for ( int y = 1 ; y <= maxx ; y ++ )
            {
                int z = f ( 1 , y + x , x*x + y*y + x*y - n ) ;

//                if ( n == 6 && x == 1 && y == 1 )
//                {
//                    cout << "z : " << z ; line ;
//                }

                if ( z <= 0 ) C ;

                if ( x*x + y*y + z*z + x*y + y*z + z*x == n )
                {
//                    if ( n == 3 )
//                    {
//                        cout << "x : " << x << " and y : " << y << " and z : " << z ; line ;
//                    }

                    ans ++ ;
                }
            }
        }

        cout << ans << "\n" ;
    }
}

int main()
{fast
    int t = 1;
    // cin >> t;

    for ( int i = 1 ; i <= t ; i ++ )
    {
        solve ( i ) ;
    }

    return 0;
}


Measured memory_bytes: 3576