Package for this problem was not updated by the problem writer or Codeforces administration after we’ve upgraded the judging servers. To adjust the time limit constraint, solution execution time will be multiplied by 2. For example, if your solution works for 400 ms on judging servers, then value 800 ms will be displayed and used to determine the verdict.

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

D. Two out of Three

time limit per test

2 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputVasya has recently developed a new algorithm to optimize the reception of customer flow and he considered the following problem.

Let the queue to the cashier contain *n* people, at that each of them is characterized by a positive integer *a*_{i} — that is the time needed to work with this customer. What is special about this very cashier is that it can serve two customers simultaneously. However, if two customers need *a*_{i} and *a*_{j} of time to be served, the time needed to work with both of them customers is equal to *max*(*a*_{i}, *a*_{j}). Please note that working with customers is an uninterruptable process, and therefore, if two people simultaneously come to the cashier, it means that they begin to be served simultaneously, and will both finish simultaneously (it is possible that one of them will have to wait).

Vasya used in his algorithm an ingenious heuristic — as long as the queue has more than one person waiting, then some two people of the first three standing in front of the queue are sent simultaneously. If the queue has only one customer number *i*, then he goes to the cashier, and is served within *a*_{i} of time. Note that the total number of phases of serving a customer will always be equal to ⌈*n* / 2⌉.

Vasya thinks that this method will help to cope with the queues we all hate. That's why he asked you to work out a program that will determine the minimum time during which the whole queue will be served using this algorithm.

Input

The first line of the input file contains a single number *n* (1 ≤ *n* ≤ 1000), which is the number of people in the sequence. The second line contains space-separated integers *a*_{1}, *a*_{2}, ..., *a*_{n} (1 ≤ *a*_{i} ≤ 10^{6}). The people are numbered starting from the cashier to the end of the queue.

Output

Print on the first line a single number — the minimum time needed to process all *n* people. Then on ⌈*n* / 2⌉ lines print the order in which customers will be served. Each line (probably, except for the last one) must contain two numbers separated by a space — the numbers of customers who will be served at the current stage of processing. If *n* is odd, then the last line must contain a single number — the number of the last served customer in the queue. The customers are numbered starting from 1.

Examples

Input

4

1 2 3 4

Output

6

1 2

3 4

Input

5

2 4 3 1 4

Output

8

1 3

2 5

4

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: May/24/2019 07:10:09 (e3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|