"use strict";
    
const main = arg => {
    arg = arg.trim().split("\n");
    const N = parseInt(arg[0].split(" ")[0]);
    
    const map = Array(1e5).fill(0);
    
    for(let i=1; i<=N; i++) {
        if(Math.pow(i, 2) > N) break;
        
        for(let j=1; j<=i; j++) {
            if(Math.pow(i, 2) + Math.pow(i, 2) > N) break;
            
            for(let k=j; k<=i; k++) {
                const temp = Math.pow(i, 2) + Math.pow(j, 2) + Math.pow(k, 2) + (i * j) + (i * k) + (j * k);
                
                // console.log("i:" + i);
                // console.log("j:" + j);
                // console.log("k:" + k);
                
                if(i === j && j === k) {
                    map[temp]++;
                    // console.log(temp + "を+1");
                } else if(i !== j && j !== k && i !== k) {
                    map[temp] += 4;
                    // console.log(temp + "を+4");
                } else {
                    map[temp] += 3;
                    // console.log(temp + "を+3");
                }
                // console.log("----");
            }            
        }
    }
    
    let answer = [];
    
    for(let i=1; i<=N; i++) {
        answer.push(map[i]);
    }
    
    console.log(answer.join("\n"));
    //console.log(map);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));