小红的多维空间冒险
题号:NC312120
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红来到了一个 n 维的神秘空间,这个空间的节点可以用长度为 n、仅由整数 01 组成的数组表示,总共有 2^n 个不同节点。例如,当 n=3 时,节点可以表示为 \left(0,0,0\right)\left(0,0,1\right)\left(0,1,0\right)\left(0,1,1\right)\left(1,0,0\right)\left(1,0,1\right)\left(1,1,0\right)\left(1,1,1\right)8 个不同节点。

\hspace{15pt}两个节点 u=(u_1, u_2, \dots, u_n)v=(v_1, v_2, \dots, v_n) 的距离公式定义为:

\displaystyle\text{dist}(u, v) = \sqrt{\sum\limits_{j = 1}^{n} (u_j - v_j)^2}

\hspace{15pt}小红想知道,对于每个整数 k1\leqq k\leqq n),有多少对不同节点 {u, v} 之间的距离恰好为 \sqrt{k}(节点无序,即 u, vv, u 视为同一对)。由于答案可能很大,请将答案对 (10^9+7) 取模后输出。

输入描述:

\hspace{15pt}输入一个整数 n \left(1 \leqq n \leqq 2 \times 10^5\right),表示空间的维度。

输出描述:

\hspace{15pt}在一行上输出 n 个整数,分别表示 k1n 时,满足条件的节点对数量对 10^9 + 7 取模的结果,整数之间用空格分隔。
示例1

输入

复制
3

输出

复制
12 12 4

说明

\hspace{15pt}这是一个三维空间(类似正方体)的情况:
\hspace{15pt}\bullet\,k = 1 时,距离为 \sqrt{1} = 1 的点对是正方体的边,一共有 12 条边。
\hspace{15pt}\bullet\,k = 2 时,距离为 \sqrt{2} 的点对是正方体面的对角线,正方体有 6 个面,每个面有 2 条对角线,共 12 条。
\hspace{15pt}\bullet\,k = 3 时,距离为 \sqrt{3} 的点对是正方体空间的对角线(比如连接 (0,0,0)(1,1,1)),共有 4 对。