process.stdin.resume(); process.stdin.setEncoding("utf-8"); let inputString = ''; let currentLine = 0; process.stdin.on('data', (inputStdin) => { inputString += inputStdin; }) process.stdin.on('end', (_) => { inputString = inputString.trim().split('\n').map(string => { return string.trim(); }); main(); }) function readLine() { return inputString[currentLine++]; } function countTuples(N, M) { // f[0..N] const f = new Array(N + 1).fill(0); // Precompute squares const sq = new Array(M + 1); for (let i = 0; i <= M; i++) { sq[i] = i * i; } for (let a = 0; a <= M; a++) { const a2 = sq[a]; for (let b = 0; b <= M; b++) { const b2 = sq[b]; const ab = a * b; for (let c = 0; c <= M; c++) { const c2 = sq[c]; const ac = a * c; const bc = b * c; for (let d = 0; d <= M; d++) { const s = a2 + b2 + c2 + sq[d] + ab + ac + a * d + bc + b * d + c * d; if (s > N) break; // d only increases ? safe to break f[s]++; } } } } return f; } function main() { const [N, M] = readLine().split(' ').map(Number); const f = countTuples(N, M); console.log(f.join(' ')); }