import sys from collections import defaultdict def main(): input = sys.stdin.read().split() N = int(input[0]) A = list(map(int, input[1:N+1])) from bisect import bisect_left, bisect_right pos = defaultdict(list) for idx, num in enumerate(A): pos[num].append(idx) ans = 0 for x in range(1, N+2): x_pos = pos.get(x, []) regions = [] prev = -1 for p in x_pos: if prev + 1 <= p - 1: regions.append((prev + 1, p - 1)) prev = p if prev + 1 <= N - 1: regions.append((prev + 1, N - 1)) total = 0 required = set(range(1, x)) if x > 1 else set() if x == 1: for (s, e) in regions: length = e - s + 1 total += length * (length + 1) // 2 else: if not required: continue for (s, e) in regions: if s > e: continue sub = A[s:e+1] freq = defaultdict(int) cnt = 0 left = 0 unique = 0 current = 0 for right in range(len(sub)): num = sub[right] if num in required: freq[num] += 1 if freq[num] == 1: unique += 1 while unique == len(required): current += len(sub) - right num_left = sub[left] if num_left in required: freq[num_left] -= 1 if freq[num_left] == 0: unique -= 1 left += 1 total += current ans += x * total print(ans) if __name__ == '__main__': main()