atcoder#ABC251D. [ABC251D] At Most 3 (Contestant ver.)

[ABC251D] At Most 3 (Contestant ver.)

题目描述

整数 W W が与えられます。
あなたは以下の条件をすべて満たすようにいくつかのおもりを用意することにしました。

  • おもりの個数は 1 1 個以上 300 300 個以下である。
  • おもりの重さは 106 10^6 以下の正整数である。
  • 1 1 以上 W W 以下のすべての正整数は 良い整数 である。ここで、以下の条件を満たす正整数 n n を良い整数と呼ぶ。
    • 用意したおもりのうち 3 \bf{3} 個以下 の異なるおもりを自由に選んで、選んだおもりの重さの和を n n にすることができる。

条件を満たすようなおもりの組を 1 1 つ出力してください。

输入格式

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

W W

输出格式

N N をおもりの個数、Ai A_i i i 番目のおもりの重さとして、以下の形式で出力せよ。答えが複数存在する場合、どれを出力しても正解とみなされる。

N N A1 A_1 A2 A_2 \dots AN A_N

ただし、N N および A1,A2,,AN A_1,A_2,\dots,A_N は以下の条件を満たす必要がある。

  • 1  N  300 1\ \leq\ N\ \leq\ 300
  • 1  Ai  106 1\ \leq\ A_i\ \leq\ 10^6

题目大意

给你整数 W(1W106)W(1 \le W \le 10^6)。 你必须构造一个数组 aa,包含最多 300300 个元素,每个元素不超过 10610^6 ,使得小于等于 WW 的所有正整数都可以被 不超过 33 aa 数组的元素相加表示出来。

6
3
1 2 3
12
6
2 5 1 2 5 1

提示

制約

  • 1  W  106 1\ \leq\ W\ \leq\ 10^6
  • W W は整数

Sample Explanation 1

上の出力は重さ 1 1 のおもり、重さ 2 2 のおもり、重さ 3 3 のおもりの 3 3 個のおもりを用意しています。 この出力は条件を満たしています。特に 3 3 番目の条件について、以下のようにおもりを選ぶことで 1 1 以上 W W 以下の整数すべてが良い整数であることが確認できます。 - 1 1 番目のおもりのみを選ぶと、重さの和は 1 1 になる。 - 2 2 番目のおもりのみを選ぶと、重さの和は 2 2 になる。 - 3 3 番目のおもりのみを選ぶと、重さの和は 3 3 になる。 - 1 1 番目と 3 3 番目のおもりを選ぶと、重さの和は 4 4 になる。 - 2 2 番目と 3 3 番目のおもりを選ぶと、重さの和は 5 5 になる。 - 1 1 番目、2 2 番目と 3 3 番目のおもりを選ぶと、重さの和は 6 6 になる。

Sample Explanation 2

同じ重さのおもりを 2 2 個以上用意しても良いです。