E - Both Sides Merger

Time Limit: 2 sec / Memory Limit: 256 MB

配点 : 700

問題文

あなたは,長さ N の数列 a_1, a_2, ..., a_N を持っています。

あなたは,この数列の長さが 1 になるまで,繰り返し以下の操作を行います。

  • まず,数列の要素を 1 つ選ぶ。
  • もしその要素が数列の端だった場合,その要素を削除する。
  • もしその要素が数列の端でない場合,その要素を,選んだ要素の両隣の要素の和に書き換える。そしてその後,両隣の要素を削除する。

あなたは,最終的な数列の要素の値を最大化したいです。

最終的な数列の要素の値の最大値と,それを達成する手順を求めてください。

制約

  • 入力は全て整数
  • 2 \leq N \leq 1000
  • |a_i| \leq 10^9

入力

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

N
a_1 a_2 ... a_N

出力

  • 1 行目には,最終的な数列の要素の値の最大値を出力せよ。
  • 2 行目には,操作の回数を出力せよ。
  • 2+i 行目には,i 回目の操作で選ぶ要素が,その時点の数列で左から何番目かを出力せよ。
  • 最大値を達成する手順が複数存在する場合,そのうちどれを出力しても良い。

入力例 1

5
1 4 3 7 5

出力例 1

11
3
1
4
2

数列は以下のように変化します。

  • 1 回目の操作後の数列 : 4, 3, 7, 5
  • 2 回目の操作後の数列 : 4, 3, 7
  • 3 回目の操作後の数列 : 11(4+7)

入力例 2

4
100 100 -1 100

出力例 2

200
2
3
1
  • 1 回目の操作後の数列 : 100, 200(100+100)
  • 2 回目の操作後の数列 : 200

入力例 3

6
-1 -2 -3 1 2 3

出力例 3

4
3
2
1
2
  • 1 回目の操作後の数列 : -4, 1, 2, 3
  • 2 回目の操作後の数列 : 1, 2, 3
  • 3 回目の操作後の数列 : 4

入力例 4

9
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

出力例 4

5000000000
4
2
2
2
2

Score : 700 points

Problem Statement

You have an integer sequence of length N: a_1, a_2, ..., a_N.

You repeatedly perform the following operation until the length of the sequence becomes 1:

  • First, choose an element of the sequence.
  • If that element is at either end of the sequence, delete the element.
  • If that element is not at either end of the sequence, replace the element with the sum of the two elements that are adjacent to it. Then, delete those two elements.

You would like to maximize the final element that remains in the sequence.

Find the maximum possible value of the final element, and the way to achieve it.

Constraints

  • All input values are integers.
  • 2 \leq N \leq 1000
  • |a_i| \leq 10^9

Input

Input is given from Standard Input in the following format:

N
a_1 a_2 ... a_N

Output

  • In the first line, print the maximum possible value of the final element in the sequence.
  • In the second line, print the number of operations that you perform.
  • In the (2+i)-th line, if the element chosen in the i-th operation is the x-th element from the left in the sequence at that moment, print x.
  • If there are multiple ways to achieve the maximum value of the final element, any of them may be printed.

Sample Input 1

5
1 4 3 7 5

Sample Output 1

11
3
1
4
2

The sequence would change as follows:

  • After the first operation: 4, 3, 7, 5
  • After the second operation: 4, 3, 7
  • After the third operation: 11(4+7)

Sample Input 2

4
100 100 -1 100

Sample Output 2

200
2
3
1
  • After the first operation: 100, 200(100+100)
  • After the second operation: 200

Sample Input 3

6
-1 -2 -3 1 2 3

Sample Output 3

4
3
2
1
2
  • After the first operation: -4, 1, 2, 3
  • After the second operation: 1, 2, 3
  • After the third operation: 4

Sample Input 4

9
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

Sample Output 4

5000000000
4
2
2
2
2