フクロモモンガのJOI 君が住んでいる森にはユーカリの木が $N$ 本生えており,それらの木には1 から $N$ の番号がついている.木 $i$ の高さは $H_i$ メートルである.
JOI 君が相互に直接飛び移ることのできる木の組が $M$ 組あり,各組の木の間を飛び移るためにかかる時間が定まっている.JOI 君が木の間を飛び移っている間は,地面からの高さが1 秒あたり1 メートル下がる.すなわち,JOI 君の現在の地面からの高さが $h$ メートル,木の間を飛び移るためにかかる時間が $t$ 秒であるとき,飛び移った後の地面からの高さは $h - t$ メートルとなる.ただし,$h - t$ が0 よりも小さくなる場合や行き先の木の高さよりも大きくなる場合は飛び移ることができない.
さらに,JOI 君は木の側面を上下に移動することによって,地面からの高さを0 メートルから今いる木の高さの範囲で増減させることができる.JOI 君が地面からの高さを1 メートル増加または減少させるためには1 秒の時間がかかる.
JOI 君は,木1 の高さ$X$ メートルの位置から木$N$ の頂上(高さ$H_N$ メートルの位置) に行こうとしており,そのためにかかる時間の最小値を知りたい.
各木の高さと,JOI 君が直接飛び移ることができる木の組の情報と,最初JOI 君がいる場所の高さが与えられる.木 $N$ の頂上に行くためにかかる時間の最小値を求めるプログラムを作成せよ.
標準入力から以下のデータを読み込め.
標準出力に,木1 の高さ $X$ メートルの位置から木 $N$ の頂上に行くためにかかる時間の最小値を秒単位で表す整数を1 行で出力せよ.ただし,そのような方法がない場合は代わりに -1 を出力せよ.
すべての入力データは以下の条件を満たす.
5 5 0 50 100 25 30 10 1 2 10 2 5 50 2 4 20 4 3 1 5 4 20
110
例えば,以下のように移動すればよい.
1. 木1 を50 メートル登る.
2. 木1 から木2 に飛び移る.
3. 木2 から木4 に飛び移る.
4. 木4 から木5 に飛び移る.
5. 木5 を10 メートル登る.
2 1 0 1 1 1 2 100
-1
JOI 君は木1 から木2 に飛び移ることができない.
4 3 30 50 10 20 50 1 2 10 2 3 10 3 4 10
100
問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。