N = int(eval(input()))

H = list(map(int,input().split()))

ans = "Yes"

RMH = [0]*N

# 右端から右からi番目の要素のうち最小の値

for i in range(N):

  if i == 0:

    RMH[i] = H[-i-1]

  else:

    RMH[i] = min([RMH[i-1],H[-i-1]]) #reversed



# 左からi番目の要素が、左からi+1番目から右端の要素の最小値との差が常に１以下ならOK

for i in range(N-1):

  if H[i] - RMH[-i-2] > 1:

    ans = "No"



print(ans)
N = int(eval(input()))

H = list(map(int, input().split()))

H.reverse()

def main():

  for i in range(N-1):

    if (H[i+1] - H[i] >= 2):

      print("No")

      return

    if (H[i+1] - H[i] == 1):

      H[i+1] -= 1

  print("Yes")



main()
N = int(eval(input()))
H = list(map(int, input().split()))
ans = "Yes"
RMH = [0] * N
# 右端から右からi番目の要素のうち最小の値
for i in range(N):
    if i == 0:
        RMH[i] = H[-i - 1]
    else:
        RMH[i] = min([RMH[i - 1], H[-i - 1]])  # reversed
# 左からi番目の要素が、左からi+1番目から右端の要素の最小値との差が常に１以下ならOK
for i in range(N - 1):
    if H[i] - RMH[-i - 2] > 1:
        ans = "No"
print(ans)

N = int(eval(input()))
H = list(map(int, input().split()))
H.reverse()


def main():
    for i in range(N - 1):
        if H[i + 1] - H[i] >= 2:
            print("No")
            return
        if H[i + 1] - H[i] == 1:
            H[i + 1] -= 1
    print("Yes")


main()

-ans = "Yes" -RMH = [0] * N -# 右端から右からi番目の要素のうち最小の値 -for i in range(N): -    if i == 0: -        RMH[i] = H[-i - 1] -    else: -        RMH[i] = min([RMH[i - 1], H[-i - 1]])  # reversed -# 左からi番目の要素が、左からi+1番目から右端の要素の最小値との差が常に１以下ならOK -for i in range(N - 1): -    if H[i] - RMH[-i - 2] > 1: -        ans = "No" -print(ans) +H.reverse() + + +def main(): +    for i in range(N - 1): +        if H[i + 1] - H[i] >= 2: +            print("No") +            return +        if H[i + 1] - H[i] == 1: +            H[i + 1] -= 1 +    print("Yes") + + +main()