Problem:
Score : 400 points

Problem Statement

One day, Snuke was given a permutation of length N, a_1, a_2, ..., a_N, from his friend.

Find the following:

Constraints

1 ≦ N ≦ 200,000

(a_1, a_2, ..., a_N) is a permutation of (1, 2, ..., N).

Input

The input is given from Standard Input in the following format:

N
a_1 a_2 ... a_N

Output

Print the answer.

Note that the answer may not fit into a 32-bit integer.

Sample Input 1

3
2 1 3

Sample Output 1

9

Sample Input 2

4
1 3 2 4

Sample Output 2

19

Sample Input 3

8
5 4 8 1 2 6 7 3

Sample Output 3

85

Solution in PHP (5.6.30) (judge verdict: Time Limit Exceeded)

<?php
/*
    http://agc005.contest.atcoder.jp/tasks/agc005_b

    Score  :
    Result :
    Time   : ms
    Memory : KB
 */

fscanf(STDIN, "%d", $N);
$a = explode(" ", trim(fgets(STDIN)));

$ans = 0;
$cnt = 0;
$NN = $N;
$aa = $a;
$address = array();
while($aa) {
	$sorted = array_flip($aa);
	$address[$NN] = $sorted[$NN];
	array_splice($aa, $sorted[$NN], 1);
	$NN--;
}

$mem = array(0, $N+1);
$sorted = array_flip($a);
ksort($sorted);
foreach ($sorted as $key => $val) {
	$pos = $address[$key];
	$l = $mem[$pos];
	$r = $mem[$pos+1];
	array_splice($mem, $pos+1, 0, $val+1);
	$left = $val - $l + 1;
	$right = $r - $val - 1;
	$ans += $left * $right * $key;
}

echo $ans . PHP_EOL;