# N,M,K=map(int, input().split()) # D=[[] for i in range(N)] # for i in range(M): # a,b,d=map(int, input().split()) # a-=1;b-=1 # D[a].append((d,b));D[b].append((d,a)) N=int(input()) A=list(map(int, input().split())) D={} B=[-100] for i in range(N): a=A[i] if i>=1 and B[-1]==a: continue B.append(a) B.append(-100) if max(B)>N: print('No') exit() from collections import deque d=deque() D={} f=0 for i in range(1,len(B)-1): if B[i-1]B[i+1]: b=B[i] if b not in D: D[b]=[] D[b].append(i) V=[0]*len(B) V[0]=1;V[-1]=1 for i in range(max(B),1,-1): if i in D: for nex in D[i]: d.append(nex) nd=deque() while d: ff=0 now=d.popleft() if B[now-1]+1==B[now]: ff=1 if V[now-1]==0: V[now-1]=1 nd.append(now-1) if B[now+1]+1==B[now]: ff=1 if V[now+1]==0: V[now+1]=1 nd.append(now+1) if ff==0: print('No') exit() else: d=nd print('Yes')