#codefestivalrelayi. [code_festival_relay_i]信号待ち

[code_festival_relay_i]信号待ち

问题描述

陆运企业陆道社的员工amylase伯爵要去一个城市送货。这个城市由nn个交叉点和mm条道路组成,每个交叉点都有编号从1到n。

每个交叉点都有一个交通信号灯,每个信号灯有两种状态:红色和绿色。对于时刻t=0,1,2,...t = 0, 1, 2, ...,交叉点ii的信号灯状态由参数aia_ibib_icic_i确定。

  • 在最开始的cic_i秒内,即t=0,1,...,ci1t=0, 1, ..., c_{i}-1,信号灯为红色。
  • 之后,信号灯会循环进行aia_i秒的绿色和bib_i秒的红色。

请注意,在信号灯由绿色变为红色的时刻(例如t=ci+ait=c_i+a_i)信号灯为红色,而在信号灯由红色变为绿色的时刻(例如t=cit=c_i)信号灯为绿色。

每个交叉点可以到达,但只能在信号灯为绿色时离开。此外,除了等待时间之外,交叉点可以在0秒内通过。

现在,当amylase伯爵在时刻0处于交叉点ss时,请计算他到达交叉点dd所需的最短时间。


输入

输入以以下格式给出。

nn mm ss dd a1a_1 b1b_1 c1c_1 ...... ana_n bnb_n cnc_n x1x_1 y1y_1 t1t_1 ...... xmx_m ymy_m tmt_m

  • 第一行包含4个整数nn(表示交叉点的数量,2n100,0002 \leq n \leq 100,000)、mm(表示道路的数量,1mmin(n(n1)/2,105)1 \leq m \leq \min(n(n-1)/2, 10^5))、ss(表示始发地的交叉点,1sn1 \leq s \leq n)和dd(表示目的地的交叉点,1dn1 \leq d \leq n)。
  • 保证sds \neq d
  • 接下来的nn行给出每个交叉点上信号灯的信息。
  • aia_ibib_icic_i1ai,bi,ci1,000,000,0001 \leq a_i, b_i, c_i \leq 1,000,000,000)表示第ii个交叉点上的信号灯在最开始的cic_i秒为红色,之后循环进行aia_i秒的绿色和bib_i秒的红色。
  • 接下来的mm行给出每条道路的信息。
  • xix_iyiy_i1xi,yin1 \leq x_i, y_i \leq n)和tit_i0ti1,000,000,0000 \leq t_i \leq 1,000,000,000)表示第ii条道路需要tit_i秒从交叉点xix_i移动到yiy_i
  • 提供的图是连通的,并且保证没有自环和重复边。

输出

输出从交叉点ss到交叉点dd的最短所需时间。

输出最后一行后换行,不包含额外字符或空行。


输入示例1


2 1 1 2
3 3 4
9 9 9
1 2 4

输出示例1


8

出发点交叉点1的信号灯在时刻4第一次变为绿色,然后经过4秒到达交叉点2。


输入示例2


4 4 4 2
2 4 8
9 9 9
2 8 4
3 3 3
1 2 8
1 4 6
2 3 6
3 4 3

输出示例2


17