Per moure’s per París, un membre dels equips UPC (aka Pesao) es va oferir per guiar el grup des d’un punt d’origen s fins a un punt de destí t. Malgrat les ganes que hi posava, els camins que acabava escollint no eren mai els millors: el grup sempre s’acostava a t, però en cap moment s’agafava un carrer que hi anés òptimament.
Específicament, sigui d(p) la distància mínima des de cada punt p fins a t. Si en algun moment s’estava en el punt x, i hi havia un carrer de longitud ℓ que connectava x amb un altre punt y, es podia passar pel carrer només si es donaven les dues condicions següents:
De quantes maneres es podria haver fet una ruta que anés des d’s fins a t tot complint les condicions anteriors?
Entrada
L’entrada consisteix en diversos casos, només amb nombres enters. Cada cas comença amb el nombre de punts n, el nombre de carrers bidireccionals m, l’origen s i el destí t, amb s ≠ t. Segueixen m ternes amb la informació de cada carrer x y ℓ, amb x ≠ y i 1 ≤ ℓ ≤ 104. Podeu suposar 2 ≤ n ≤ 5 · 104 i 0 ≤ m ≤ 5n. Els punts es numeren entre 0 i n−1. Pot haver-hi més d’un carrer entre dos punts donats. També pot ser que no hi hagi cap camí entre s i t.
Sortida
Per a cada cas, escriviu el nombre de camins possibles mòdul 108 + 7.
Input
2 2 0 1 0 1 100 0 1 200 2 2 0 1 0 1 100 0 1 100 5 0 4 2 5 12 4 2 4 0 10 0 4 20 4 1 15 3 4 30 0 2 20 0 2 10 0 3 7 3 2 14 3 2 5 1 0 9 2 1 6 2 1 12
Output
1 0 0 5