複数台のトランポリンが、10m間隔で直線上に設置されています。それぞれのトランポリンについて、水平方向に跳ぶことができる最大距離が決まっています。左端のトランポリンから始めて、跳ぶことができる範囲にあるトランポリンに跳び移っていきます。これを繰り返して、まずは右端のトランポリンまで行ってから、左端のトランポリンに戻りたいと思います。この間、一度もトランポリンから降りずに往復することができるでしょうか。
各トランポリンで水平方向に跳ぶことができる最大距離が与えられたとき、左端と右端の間を往復できるかを報告するプログラムを作成せよ。ただし、トランポリンは大きさのない点とみなす。
入力は以下の形式で与えられる。
N d_1 d_2 : d_N
1行目にトランポリンの台数 N (2 ≤ N ≤ 3 × 105) が与えられる。続く N 行に、左から i 番目のトランポリンで跳ぶことができる最大距離 d_i (1 ≤ d_i ≤ 106) が、メートル単位の整数で与えられる。
左端と右端の間を往復できるなら "yes"、できないなら "no" と1行に出力する。
4 20 5 10 1
no
3 10 5 10
no
4 20 30 1 20
yes