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) { const f = new Array(N + 1).fill(0); // Map: "sum,sq" ? count const map = new Map(); for (let a = 0; a <= M; a++) { for (let b = 0; b <= M; b++) { const sum = a + b; const sq = a * a + b * b; const key = sum + "," + sq; map.set(key, (map.get(key) || 0) + 1); } } const entries = Array.from(map.entries()); for (let i = 0; i < entries.length; i++) { const [key1, cnt1] = entries[i]; const [s1, q1] = key1.split(",").map(Number); for (let j = 0; j < entries.length; j++) { const [key2, cnt2] = entries[j]; const [s2, q2] = key2.split(",").map(Number); const S = s1 + s2; const Q = q1 + q2; const value = (S * S + Q) >> 1; if (value <= N) { f[value] += cnt1 * cnt2; } } } return f; } function main() { const [N, M] = readLine().split(' ').map(Number); const f = countTuples(N, M); console.log(f.join(' ')); }