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 JavaScript (node.js v5.12) (judge verdict: Time Limit Exceeded)

    'use strict'
     
    process.stdin.resume();
    process.stdin.setEncoding('utf8');
     
    let line = ''
    process.stdin.on('data', function(chunk) {
      line = line + chunk
    });
     
    process.stdin.on('end', function() {
      const values = line.split(/\s+/)
      console.log(b(values.slice(1, values.length-1).map(x => parseInt(x))))
      process.exit(0)
    });
     
    function b(arr) {
  let total = 0
 let cache = new Array(arr.length)
 arr.reverse().forEach((num, index) => {
   let current = index - 1
   let cached = 0
   while (current !== -1) {
     if (arr[current] < num) {
       cached = cache[current]
       break;
     } else {
       current--
     }
   }
   const thisTotal = cached + num * (index - current)
   cache[index] = thisTotal
   total += thisTotal
 })
      return total
    }