M - Mahjong 2 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 100

問題文

1 から N までの整数が書かれたカードが合計で 3M-1 枚あり、各 1 \leq i \leq N について整数 i の書かれたカードは A_i 枚存在します。

あなたは1 から N までの整数 K1 つ選び、整数 K の書かれたカードを追加して以下の条件を満たそうとしています。

  • 条件 : 同じ数字の書かれた 3 枚のカード、または連続した数字の書かれた 3 枚のカードを選び取り除くことを M 回繰り返して、持っているカードを空にすることが出来る。

条件を満たすことのできる K を全て列挙してください。

制約

  • 入力は全て整数
  • 1 \le N \le 5 \times 10^5
  • 1 \le M \le 10^8
  • 0 \leq A_i \leq 3M-1
  • \sum A_i=3M-1

部分点

以下の制約を満たすデータセットに正解した場合は 1 点が与えられる。

  • N \le 2000

入力

入力は以下の形式で標準入力から与えられる。

N M
A_1 A_2 \ldots A_N

出力

最初の行には条件を満たす K の個数 L を出力せよ。その後、条件を満たす K を昇順で出力せよ。

L
K_1 K_2 \ldots K_L

入力例 1

5 4
0 4 2 2 3

出力例 1

2
2 5

例えば K=5 を追加したとき、\lbrace 2,2,2\rbrace,\lbrace 2,3,4\rbrace,\lbrace 3,4,5\rbrace,\lbrace 5,5,5\rbrace のように 4 つの組を作ることができます。


入力例 2

4 1
1 0 0 1

出力例 2

0

条件を満たす K が存在しないこともあります。


入力例 3

8 15
7 10 4 2 8 6 3 4

出力例 3

3
1 4 7