n = gets.to_i
h = gets.split(' ').map(&:to_i)
count = 0
max_num = 0
(n-1).times do |a|
  	#一段目からの最大の高さの階段を取得する
    if h[a] > max_num
        max_num = h[a]
    end
    #次の階段の方が最大の高さの階段より二段以上低い場合、単調非減少はできない
    if h[a+1] - max_num <= -2
        puts 'No'   
        exit
    # 次の階段の方が一段低い場合、今の段差を一段下げれば単調非減少になる可能性はある。
    # 配列の中で2回以上一段低い場所がある場合は、単調非減少にならない。
    elsif h[a+1] - max_num >= -1 
        next
    end
end

puts 'Yes'