算概率
题号:NC200167
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛牛刚刚考完了期末,尽管 牛牛 做答了所有  道题目,但他不知道有多少题是正确的。
不过,牛牛 知道第  道题的正确率是 p_i
牛牛 想知道这 n 题里恰好有  题正确的概率分别是多少,对  取模。
对  取模的含义是:对于一个  的不可约分数 ,存在  使得 即为  对  取模的结果。

输入描述:

第一行,一个正整数 
第二行, 个整数 ,在模  意义下给出。
保证

输出描述:

输出一行  个用空格隔开的整数表示答案(对  取模)。
示例1

输入

复制
1
500000004

输出

复制
500000004 500000004

说明

有 1 道题,做对的概率是 1 \over 2 ( 1 \over 2 在模 10^9+7 意义下为 500000004 )。