编程题
### 问题描述
小齐和农夫约翰喜欢进行山羊卡丁车比赛。这个想法很类似于其他人喜欢的卡丁车比赛,不同之处在于这些卡丁车由山羊牵引,赛道是由附近的农田构成的。农田包括 $N$ 片草地和 $M$ 条道路,每条道路连接一对草地。
小齐想要在附近的农田中设计一个赛道。一个农田是指两片或两片以上的草地的子集,其中每片草地都可以通过一系列独特的道路到达其他每片草地。
附近的农田可能包含多个农场。假设有 $K$ 个农场。小齐想通过添加 $K$ 条长度为 $X$ 的道路,将所有 $K$ 个农场连接起来,形成一个山羊卡丁车的环道。每个农场应该被正好访问一次,而且每个农场内至少要穿越一条道路。
为了使比赛对参与者更有趣,赛道的总长度应该至少为 $Y$。小齐想知道在所有有趣的赛道上,总赛道长度的和是多少。如果两个赛道中存在两片草地是相邻的(在农场间添加道路后),则这两个赛道不同。请注意,只有选择的道路才重要,道路的行进方向不重要。
### 输入格式
输入的第一行包含四个整数 $N$、$M$、$X$ 和 $Y$。
接下来的 $M$ 行描述道路。每行的格式为 $A_i$ $B_i$ $D_i$,表示草地 $A_i$ 和 $B_i$ 之间有一条长度为 $D_i$ 的道路。其中 $1 \leq A_i, B_i \leq N$,$0 \leq D_i \leq 2500$。每片草地至少与一条道路相连,并且没有道路的环。
在至少 70% 的测试用例中,保证 $N \leq 1000$ 且 $Y \leq 1000$。
### 输出格式
输出一个整数,表示所有有趣赛道上的总赛道长度之和。由于赛道长度之和可能非常大,输出结果对 $10^9+7$ 取模。
### 样例输入
```
5 3 1 12
1 2 3
2 3 4
4 5 6
```
### 样例输出
```
54
```
### 评测数据规模
$1 \leq N \leq 1500$,$1 \leq M \leq N-1$,$0 \leq X, Y \leq 2500$。