Problem:
Score : 500 points

Problem Statement

There are N children standing in a line from left to right. The activeness of the i-th child from the left is A_i.

You can rearrange these children just one time in any order you like.

When a child who originally occupies the x-th position from the left in the line moves to the y-th position from the left, that child earns A_x \times |x-y| happiness points.

Find the maximum total happiness points the children can earn.

Constraints

2 \leq N \leq 2000

1 \leq A_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 ... A_N

Output

Print the maximum total happiness points the children can earn.

Sample Input 1

4
1 3 4 2

Sample Output 1

20

If we move the 1-st child from the left to the 3-rd position from the left, the 2-nd child to the 4-th position, the 3-rd child to the 1-st position, and the 4-th child to the 2-nd position, the children earns 1 \times |1-3|+3 \times |2-4|+4 \times |3-1|+2 \times |4-2|=20 happiness points in total.

Sample Input 2

6
5 5 6 1 1 1

Sample Output 2

58

Sample Input 3

6
8 6 9 1 2 1

Sample Output 3

85

Solution in PHP (7.4.4) (judge verdict: Wrong Answer)

<?php
// From https://qiita.com/yoshikyoto/items/6924478283dbdd549e4b
class Scanner {
    private $arr = [];
    private $count = 0;
    private $pointer = 0;
    public function next() {
        if($this->pointer >= $this->count) {
            $str = trim(fgets(STDIN));
            $this->arr = explode(' ', $str);
            $this->count = count($this->arr);
            $this->pointer = 0;
        }
        $result = $this->arr[$this->pointer];
        $this->pointer++;
        return $result;
    }
    public function hasNext() {
        return $this->pointer < $this->count;
    }
    public function nextInt() {
        return (int)$this->next();
    }
    public function nextDouble() {
        return (double)$this->next();
    }
}
// From https://qiita.com/yoshikyoto/items/6924478283dbdd549e4b
list($X)=sscanf(trim(fgets(STDIN)),"%d");
$num = array();
$sc = new Scanner();
for ($i=0; $i < $X; $i++) { 
    # code...
    $n = $sc->nextInt();
    $num[$i] = $n;
}
arsort($num);
$total = 0;
$min = 1;
$max = $X;
for ($i=0; $i < ceil($X/2); $i++) { 
    # code...
    $now = current($num);
    $pos = key($num) + 1;

    if(abs($pos - $min) < abs($max - $pos)){
        $calc = abs($max - $pos);
        $total += $num[$max - 1] * $calc;
        $max--;
    }else{
        $calc = abs($pos - $min);
        $total += $num[$min - 1] * $calc;
        $min++;
    }
    $total += $now * $calc;
    next($num);
}
$total++;
print($total."\n");