#J1021. 大力计算

大力计算

题目描述

给你一个由 nn 个整数构成的可重复集合 T={a1an}T=\{a_1\sim a_n\},假设 SS 为该集合的一个子集 {b1bk}\{b_1\sim b_k\},则 f(S)=(b1+b2++bk)2f(S)=(b_1+b_2+\cdots+b_k)^2
假设 g(i)g(i) 表示所有元素个数为 ii 的子集的 ff 值之和,即 g(i)=STand S=if(S)g(i)=\sum_{S\subseteq T and \space |S|=i}f(S)。 分别求出 g(1)g(n)g(1)\sim g(n)的值(输出答案对 109+710^9+7 取模的结果)。

输入格式

第一行一个整数 nn
第二行 nn 个整数 a1ana_1\sim a_n

输出格式

一行 nn 个数,表示 g(1)g(n)g(1)\sim g(n)

输入输出样例 #1

输入 #1

5
1 2 3 4 5

输出 #1

55 390 840 730 225

说明/提示

对于所有测试点,满足:1n3000,0ai1091\le n \le 3000,0\le a_i \le 10^9