论AE自动化的重要性
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

"不会有人有AE还搁这手搓吧" ——Baddog

Baddog是条懒狗,所以什么东西都不想手搓,特地下了一个AE实现自动化。

Lazydog是条坏狗,而且很热衷爬科技树,所以当Baddog把流水线造好之后,就被Lazydog永久征用了。

Lazydog想搓很多稀奇古怪的物品,但是不知道合成单元的上限还够不够,所以Lazydog想让你帮忙计算,将这些一口气搓完,合成单元的负载是多少。

(一个物品通过合成,直接装入等方式进入库存时,增加1负载,流水线上本身没有库存,Lazydog身上库存足够)

1、通过合成方式进入库存:

假设x能合成y,称x为y的原材料。对于y的合成,需要集其所需的全部原材料才能合成1个y,且合成后原材料消失,生成1个y。

此时,由于y的合成,负载增加1。

2、通过直接装入方式进入库存:

该当且仅当物品无法通过合成方式得到时,才能通过直接装入方式。每装入一个物品,负载增加1。

样例一如图所示:

如图所示:合成1个5共需要2个4,2个2和2个3;合成1个3需要2个1和2个2;合成1个4需要2个1。物品1和物品2无法通过合成得到,只能通过直接装入方式。

输入描述:

第一行输入 nmk ,指流程中有 n 个物品,m 条流程线,Lazydog需要其中 k 种物品。

接下来 k 行,每行输入个数 a_ib_i,表示Lazydog需要b_ia_i物品。

接下来m行,每行输入三个数xyc,指每1y物品的制造都需要cx物品

2\leq n \leq10^5,n-1\leq m\leq2n,1\leq k\leq n

1\leq x,y,a_i\leq n

1\leq c,b_i\leq10^9

输出描述:

仅输出一个整数表示合成单元的负载,对1000000007取模。
示例1

输入

复制
5 6 1
5 1
1 3 2
1 4 2
2 3 2
2 5 2
3 5 2
4 5 2

输出

复制
19

说明

一共需要装入8个1和6个2
消耗4个1生成2个4,消耗4个1和4个2生成2个3。
消耗2个4,2个3和2个2生成1个5。
所以答案为8+6+2+2+1=19