import java.lang.Math.max
import java.lang.Math.min


fun main(args:Array<String>):Unit{
    val n = readLine()!!.toInt()
    val trampoline = Array(n){
        Trampoline(it * 10, readLine()!!.toInt())
    }
    val maxRight = Array(n){0}
    maxRight[0] = trampoline[0].maxRightPos()
    for (i in 1 until n){
        maxRight[i] = max(maxRight[i - 1], trampoline[i].maxRightPos())
    }
    val minLeft = Array(n){n * 10}
    minLeft[n - 1] = trampoline[n - 1].minLeftPos()
    for (i in 2 .. n){
        minLeft[n - i] = min(minLeft[n - i + 1], trampoline[n - i].minLeftPos())
    }
    var forward = 0
    var prevPos = 0
    while (forward < n - 1){
        forward = maxRight[forward] / 10
        if (prevPos == forward){
            break
        }
        prevPos = forward
    }
    var backward = n - 1
    while (backward > 0){
        backward = (minLeft[backward] + 9) / 10
        if (prevPos == backward){
            break
        }
        prevPos = backward
    }
    println(if (forward >= n - 1 && backward <= 0) "yes" else "no")
}
class Trampoline(val position:Int, val length:Int){
    fun maxRightPos():Int = position + length
    fun minLeftPos():Int = position - length
}
