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 PyPy3 (2.4.0) (judge verdict: Time Limit Exceeded)

N = int(input())
A = [int(x) for x in input().split()]
B = [[A[i], i] for i in range(N)]
B.sort()
C = [0] * N
cnt = 0
def lsearch(s, t, C):
  if s > t:
    return -1
  if s == t:
    return s if C[s] == 1 else -1
  else:
    m = (s + t) // 2
    return max(lsearch(s, m, C), lsearch(m + 1, t, C))
def rsearch(s, t, C):
  if s > t:
    return len(C)
  if s == t:
    return s if C[s] == 1 else len(C)
  else:
    m = (s + t) // 2
    return min(rsearch(s, m, C), rsearch(m + 1, t, C))
for b, i in B:
  l = i - lsearch(0, i - 1, C)
  r = rsearch(i + 1, N - 1, C) - i
  C[i] = 1
  cnt += b * l * r
print(cnt)