Dato un albero con $N$ nodi e $N - 1$ archi, in cui ogni arco $i$ ha un livello di complessità $l_i$. La distanza $d(u, v)$ tra due nodi $u$ e $v$ è la somma dei livelli di complessità lungo l'unico cammino tra di essi nell'albero. Nota che $d(u, v) = d(v, u)$ e $d(v, v) = 0$.
Ci sono $M$ rompicapi, e ciascun rompicapo $i$ richiede $k_i$ frammenti di informazione, che si trovano lungo specifici archi dell'albero. È possibile che più frammenti di informazione si trovino sullo stesso arco!
Per qualsiasi coppia di nodi $S$ e $T$, un viaggio tra $S$ e $T$ ha successo se, lungo il cammino da $S$ a $T$, vengono raccolti tutti i frammenti di informazione necessari per qualsiasi rompicapo incontrato. Nello specifico, un rompicapo è considerato risolvibile durante un viaggio se tutti i frammenti di informazione richiesti per quel rompicapo vengono incontrati lungo il cammino.
Il compito è calcolare la somma delle distanze per tutti i viaggi di successo tra qualsiasi coppia di nodi $S$ e $T$ (dove $1 \le S \le T \le N$), modulo $10^9 + 7$.
Formalmente, il compito è calcolare:
$$\sum_{\substack{1 \le S \le T \le N, \\ \text{journey } (S, T) \text{ is successful}}} d(S, T)$$
Partendo da un nodo $S$, devi viaggiare verso un altro nodo $T$ lungo l'unico cammino nell'albero. Lungo il percorso, qualsiasi frammento di informazione situato sugli archi di questo cammino verrà raccolto automaticamente. Affinché il viaggio da $S$ a $T$ sia considerato di successo, deve soddisfare la seguente condizione:
- Sia $O$ l'insieme dei rompicapi per i quali è stato raccolto almeno un frammento di informazione durante il viaggio. Il viaggio ha successo se e solo se sono stati raccolti tutti i frammenti di informazione richiesti per risolvere ogni rompicapo nell'insieme $O$. In altre parole, devi aver raccolto ogni frammento di informazione necessario per risolvere completamente ciascun rompicapo in $O$.
Input
La prima riga contiene due interi separati da spazi $N$ e $M$ ($2 \le N \le 10^6, 1 \le M \le 10^6$).
Seguono poi $N - 1$ righe, ciascuna contenente tre interi separati da spazi $a_i, b_i, l_i$ ($1 \le a_i, b_i \le N, 1 \le l_i \le 10^9$), che descrivono un arco $i$ che collega i nodi $a_i$ e $b_i$ con complessità $l_i$.
Seguono quindi le definizioni dei $M$ rompicapi. Per ciascun rompicapo $i$, l'input inizia con una riga contenente $k_i$ seguito da $k_i$ interi separati da spazi $u_{i_1}, u_{i_2}, \dots, u_{i_{k_i}}$ ($0 \le k_i \le K, 1 \le u_{i_j} \le N - 1$), dove $u_{i_j}$ sono gli indici degli archi sui quali si trovano i frammenti di informazione richiesti per risolvere il rompicapo.
Qui, $K$ è la somma di tutti i valori $k_i$ su tutti i rompicapi, ed è garantito che $1 \le K \le 10^6$.
Output
Stampa una riga contenente un intero, la risposta al problema modulo $10^9 + 7$.
Esempio
Input di esempio 1
5 4 1 2 3 1 4 1 1 5 6 4 3 2 2 4 4 1 1 0 2 3 4
Output di esempio 1
17
Nota
Figura 1. La struttura dell'albero. I rombi sono i frammenti di informazione e i valori sugli archi sono le complessità.