AT_arc210_e [ARC210E] Subset Sum Gaps
Description
正整数列 $ A=(A_1,A_2,\ldots,A_N) $ が与えられます.
$ A $ の部分列は,要素の添字の違いを区別すれば, $ 2^N $ 個あります.これらの各部分列の総和を**昇順に**列挙したものを, $ S_1, S_2, \ldots, S_{2^N} $ とします.
整数 $ k $ ( $ 1\leq k\leq 2^N-1 $ )であって, $ 1.01 \times S_k\leq S_{k+1} $ を満たすものすべてについて, $ S_k, S_{k+1}, (k\bmod 998244353) $ を出力してください.
部分列とは数列 $ A $ の部分列とは, $ A $ の要素を $ 0 $ 個以上選んで削除し,残った要素を元の順序を保って並べた数列のことを指します.
Input Format
入力は以下の形式で標準入力から与えられます.
> $ N $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $
Output Format
$ 1 $ 行目には,条件を満たす整数 $ k $ の個数を出力してください.
$ 2 $ 行目以降には各行に,条件を満たす整数 $ k $ それぞれについて, $ S_k, S_{k+1}, (k\bmod 998244353) $ を空白区切りで出力してください.
$ k $ について昇順に出力してください.
Explanation/Hint
### Sample Explanation 1
部分列は次の $ 8 $ 個です.
- 空な部分列.総和は $ 0 $ である.
- $ (5) $ .総和は $ 5 $ である.この部分列は $ 2 $ 回現れる.
- $ (3) $ .総和は $ 3 $ である.
- $ (5,5) $ .総和は $ 10 $ である.
- $ (5,3) $ .総和は $ 8 $ である.この部分列は $ 2 $ 回現れる.
- $ (5,5,3) $ .総和は $ 13 $ である.
$ S_1, S_2, \ldots, S_8 $ は順に $ 0,3,5,5,8,8,10,13 $ となります.
### Constraints
- $ 2\leq N\leq 5000 $
- $ 1\leq A_i\leq 10^{13} $