''' もし、(l,r)で条件を満たさない場合、r1: y=y>>1 node[y-1]=node[-3](node[(y<<1)-1],node[y<<1]) def query(node,l,r): x,y=l,r z=node[-1]-1 rr=node[-2] rl=node[-2] while True: if x==y: return node[-3](rl,rr) if x&1: rl=node[-3](rl,node[x+z]) x+=1 if y&1: rr=node[-3](node[y+z-1],rr) if z==0: return node[-3](rl,rr) x>>=1 y>>=1 z>>=1 N=int(input()) A=list(map(int,input().split())) segmin=[] segmax=[] INF=10**18 def f(x,y): z=sorted([x[0],x[1],y[0],y[1]]) return (z[0],z[1]) init(N,segmin,[(A[i],INF) for i in range(N)],(INF,INF),f) init(N,segmax,A,-1,lambda x,y:max(x,y)) ANS=0 for l in range(N-1): rl,rr=l,N-1 while rl>1 if sum(query(segmin,l,m+1))>=query(segmax,l,m+1): rl=m else: rr=min(rr-1,m) ANS+=rl-l print(ANS)