時間制限 : sec, メモリ制限 : KB
English / Japanese  

トランポリン

複数台のトランポリンが、10m間隔で直線上に設置されています。それぞれのトランポリンについて、水平方向に跳ぶことができる最大距離が決まっています。左端のトランポリンから始めて、跳ぶことができる範囲にあるトランポリンに跳び移っていきます。これを繰り返して、まずは右端のトランポリンまで行ってから、左端のトランポリンに戻りたいと思います。この間、一度もトランポリンから降りずに往復することができるでしょうか。

各トランポリンで水平方向に跳ぶことができる最大距離が与えられたとき、左端と右端の間を往復できるかを報告するプログラムを作成せよ。ただし、トランポリンは大きさのない点とみなす。

Input

入力は以下の形式で与えられる。

N
d_1
d_2
:
d_N

1行目にトランポリンの台数 N (2 ≤ N ≤ 3 × 105) が与えられる。続く N 行に、左から i 番目のトランポリンで跳ぶことができる最大距離 d_i (1 ≤ d_i ≤ 106) が、メートル単位の整数で与えられる。

Output

左端と右端の間を往復できるなら "yes"、できないなら "no" と1行に出力する。

Sample Input 1

4
20
5
10
1

Sample Output 1

no

Sample Input 2

3
10
5
10

Sample Output 2

no

Sample Input 3

4
20
30
1
20

Sample Output 3

yes

Note

Algorithm
 
C++