import sys import math def main(): sys.setrecursionlimit(1 << 25) n, *rest = map(int, sys.stdin.read().split()) p = rest[:n] logn = max(1, math.floor(math.log2(n))) if n else 0 st_min = [] st_max = [] # Build sparse tables for RMQ and Range Max st_min = [[0] * n for _ in range(logn + 1)] st_max = [[0] * n for _ in range(logn + 1)] for i in range(n): st_min[0][i] = p[i] st_max[0][i] = p[i] for k in range(1, logn + 1): for i in range(n - (1 << k) + 1): st_min[k][i] = min(st_min[k-1][i], st_min[k-1][i + (1 << (k-1))]) st_max[k][i] = max(st_max[k-1][i], st_max[k-1][i + (1 << (k-1))]) log_table = [0] * (n + 1) for i in range(2, n + 1): log_table[i] = log_table[i//2] + 1 def get_min(l, r): length = r - l + 1 k = log_table[length] return min(st_min[k][l], st_min[k][r - (1 << k) + 1]) def get_max(l, r): length = r - l + 1 k = log_table[length] return max(st_max[k][l], st_max[k][r - (1 << k) + 1]) seen = set() for i in range(n): for j in range(i+1, n): a = min(p[i], p[j]) b = max(p[i], p[j]) current_min = get_min(i, j) current_max = get_max(i, j) if current_min == a and current_max == b: if (i, j) not in seen and (j, i) not in seen: seen.add((i, j)) print(len(seen)) if __name__ == '__main__': main()