#YZT4. 【莆田一中邀请赛】飞机

【莆田一中邀请赛】飞机

热心群友豆猫所在的城市有着编号为1到NN的机场。第ii个机场的海拔是HiH_i米。

飞行员豆猫君能在其中的MM对机场之间直接飞行,在各对机场之间飞行所需的时间是固定的。

当豆猫在机场之间飞行的时候,他离地面的高度每秒会下降1米。

也就是说,如果豆猫现在离地高度是hh米,在机场之间飞行需要tt秒,那么飞行之后的离地高度就会变成hth-t米。

规定:当hth-t小于0或大于目标机场的高度时则不能飞行。

豆猫君还能沿着他所在的机场上下移动(对,他开的是直升机),使得他的离地高度在0到当前所在机场高度的范围内变化。

飞行员豆猫每次使自己的离地高度增加或减少1米都需要1秒的时间。

现在,豆猫要从1号机场上高度为XX米的位置出发,到机场NN的顶端(高度为米HNH_N的位置)去。

他想知道为了达成这个目标所需时间的最小值。

由于豆猫去机场上班了,这个任务就交给热爱编程的你了。

一句话题目:给出各个机场的高度,飞行员豆猫能直接飞行的机场对和豆猫君最初所在位置的高度,请求出到达机场NN顶端所需时间的最小值。

输入格式

第一行包含三个整数N,M,XN,M,X

接下来NN行中,第ii行有一个整数,表示机场ii的高度是HiH_i米。

接下来MM行中,第jj行有三个整数Aj,Bj,TjA_j,B_j,T_j,表示豆猫能花TjT_j秒的时间从AjA_j飞到BjB_j或从BjB_j飞到AjA_j

输出格式

仅一行一个整数,所需时间的最小值(单位:秒)

如果不能到达目的地则输出-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

输出样例1

110

输入样例2

2 1 0
1
1
1 2 100

输出样例2

-1

数据范围与提示

样例1解释:(不唯一)

沿着机场1向上飞50米

从机场1飞到机场2

从机场2飞到机场4

从机场4飞到机场5

沿着机场5向上飞10米

样例2解释:adou无法从机场1飞到机场2

对于100%的数据,满足:

2<=N<=1052<=N<=10^5

1<=M<=1061<=M<=10^6

1<=Hi<=1091<=i<=N1<=H_i<=10^9(1<=i<=N)

1<=Tj<=1091<=j<=M1<=T_j<=10^9(1<=j<=M)

0<=X<=H10<=X<=H_1

对于前25%的数据,满足

2<=N<=10002<=N<=1000

1<=M<=30001<=M<=3000

1<=Hi<=1001<=i<=N1<=H_i<=100(1<=i<=N)

1<=Tj<=1001<=j<=M1<=T_j<=100(1<=j<=M)

对于中间25%的数据,满足X=0X=0

对于剩下的50%数据,一切精彩尽在其中。