N = int(eval(input()))

H = [0] + list(map(int, input().split()))



ans = 'Yes'

for i in range(N):

    if H[i + 1] > H[i]:

        H[i + 1] -= 1

    if H[i] > H[i + 1]:

        ans = 'No'



print(ans)

from functools import reduce



N = int(eval(input()))

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



# 先頭から順に、可能な限りマスの高さを低くする戦略により、単調非減少にできるか判定

ans, _ = reduce(

    lambda acc, h: (

        (

            'Yes' if acc[0] == 'Yes' and acc[1] <= h else

            'No'

        ),

        h if acc[1] >= h else

        h - 1

    ),

    H,

    ('Yes', 0)

)



print(ans)

N = int(eval(input()))
H = [0] + list(map(int, input().split()))
ans = "Yes"
for i in range(N):
    if H[i + 1] > H[i]:
        H[i + 1] -= 1
    if H[i] > H[i + 1]:
        ans = "No"
print(ans)

from functools import reduce

N = int(eval(input()))
H = list(map(int, input().split()))
# 先頭から順に、可能な限りマスの高さを低くする戦略により、単調非減少にできるか判定
ans, _ = reduce(
    lambda acc, h: (
        ("Yes" if acc[0] == "Yes" and acc[1] <= h else "No"),
        h if acc[1] >= h else h - 1,
    ),
    H,
    ("Yes", 0),
)
print(ans)

+from functools import reduce + -H = [0] + list(map(int, input().split())) -ans = "Yes" -for i in range(N): -    if H[i + 1] > H[i]: -        H[i + 1] -= 1 -    if H[i] > H[i + 1]: -        ans = "No" +H = list(map(int, input().split())) +# 先頭から順に、可能な限りマスの高さを低くする戦略により、単調非減少にできるか判定 +ans, _ = reduce( +    lambda acc, h: ( +        ("Yes" if acc[0] == "Yes" and acc[1] <= h else "No"), +        h if acc[1] >= h else h - 1, +    ), +    H, +    ("Yes", 0), +)