問題文
あなたは N 個の魔法のアイテムを持っています.各アイテム i (1≤i≤N) には,倍率 di と 魔力 ci が設定されています.
あなたはこれらのアイテムの中から,好きな組み合わせ(空集合を含む)を選んで装備することができます.あるアイテムの集合 S⊆{1,2,…,N} を選んだとき,その「合計倍率」と「合計魔力」を以下のように定義します.
- 合計倍率 DS: 選んだアイテムの倍率の総乗.すなわち DS=∏i∈Sdi.
- 合計魔力 CS: 選んだアイテムの魔力の総乗.すなわち CS=∏i∈Sci.
- ただし,空集合(S=∅)の場合は D∅=1,C∅=1 とします.
各 k=1,2,…,M について,合計倍率 DS がちょうど k となるような全ての組み合わせ S における「合計魔力 CS」の総和を求めてください.
出力する値は,すべて 998,244,353 で割った余りとします.
制約
- 1≤N≤105
- 1≤M≤105
- 1≤di≤M
- 0≤ci<998,244,353
- 入力はすべて整数である.
入力
入力は以下の形式で標準入力から与えられる.
出力
M 行出力せよ.k 行目には,合計倍率が k となる組み合わせの魔力総和を 998,244,353 で割った余りを出力すること.
サンプル
- k=1: 空集合のみ,魔力は 1.
- k=2: {アイテム1} (魔力 3) と {アイテム2} (魔力 5) の 2 通り,3+5=8.
- k=3: 合計倍率が 3 になる組み合わせは存在しない,0.
- k=4: {アイテム1,アイテム2} (魔力 3×5=15) と {アイテム3} (魔力 2) の 2 通り,15+2=17.