Mallet Math

ここでは部分点制約でのジャッジとなります。

問題文

NN 個の数字が書かれた積み木が縦に積まれています。上から ii 番目の積み木には aia_i が書かれています。moguさんはこれらの積み木のうち 00 個以上 N1N-1 個以下の積み木を叩いて落とし、残った積み木に書かれている数字の和が KK になるようにしたいです。moguさんが残すべき積み木の組み合わせを 11 つ求めてください。条件を満たす積み木の組み合わせが複数ある場合、どれを出力しても正解とします。

制約

  • 1N401 \leq N \leq 40
  • 109K109-10^9 \leq K \leq 10^9
  • 2.5×107ai2.5×107(1iN)-2.5 \times 10^7 \leq a_i \leq 2.5 \times 10^7 (1 \leq i \leq N)
  • 書かれている数字の和が KK になる1個以上の積み木の組み合わせが必ず存在する。

部分点

この問題には部分点を設ける。以下の追加制約において正解した場合、部分点(200点)を与える。

  • 1N201 \leq N \leq 20

入力

入力はすべて整数である。

N K
a_1 a_2 ... a_N

出力

moguさんが残すべき積み木の組み合わせを 11 つ、以下の形式で出力せよ。

C
B_1 B_2 ... B_C

1行目にmoguさんが残すべき積み木の個数 CC を、 2行目にmoguさんが残すべき積み木の上からの位置の集合 BB の要素 Bj(1jC,1BjN)B_j(1 \leq j \leq C,1 \leq B_j \leq N) を全て出力せよ。積み木の出力の順番は問わない。

サンプル

入力1
5 10
1 2 3 4 5
出力1
4
1 2 3 4

合計が 1010 になるような積み木の残し方は複数考えられますが、どれを出力しても構いません。

入力2
6 6
1 1 1 1 1 1
出力2
6
1 2 3 4 5 6

1つも積み木を叩き落さなくてもよいこともあります。

入力3
4 0
-1 10 1 0
出力3
3
1 3 4

負の整数や 00 が積み木に書いてあることもあります。

入力4
5 22
7 7 7 8 8
出力4
3
2 3 4

Submit


Go (1.21)