lonely
题号:NC251502
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

题目背景

わたし わたし わたしはここにいる

我 我 我就在这里

殴り書きみたいな音出せない状態で叫んだよ

在无法发出杂乱音色的情况下我选择了呐喊

なんかに なりたい なりたい 何者かでいい

想要成为 成为 成为什么人都好

馬鹿なわたしは歌うだけ

愚蠢的我唯有放声高歌

ぶちまけちやおうか星に

对着星星都宣泄出来吧


题意描述

给出 n 个点,对于每个非空点集 S,给出权值 a_S 和贡献值 b_S,其中 a,b 下标是用二进制表示的集合。

f_{S,i} 表示把 S 分成 i 个不交非空集合,集合权值之积之和。对于 i=1\sim n,求 \sum _{S=0}^{2^n-1}b_Sf_{S,i}

输入描述:

第一行一个整数 n

接下来一行 2^n-1 个数,依次表示 a_1,a_2,\cdots,a_{2^n-1}

接下来一行 2^n-1 个数,依次表示 b_1,b_2,\cdots,b_{2^n-1}

输出描述:

输出一行 n 个数依次表示答案对 998244353 取模的值。
示例1

输入

复制
3
4 2 1 5 3 5 1
3 1 1 3 3 3 1

输出

复制
55 129 40

备注:

0\leq a_i,b_i<9982443531\leq n\leq20