#include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef vector VI; #define REP(i,n) for(int i=0, i##_len=(n); i inline void amin(T &x, const T &y) { if (y inline void amax(T &x, const T &y) { if (x, greater > L; REP (i, N) { if (deg[i] <= K) { L.push(i); } } LL ans = 0; REP ($, N) { while (use[L.top()] || deg[L.top()] > K) { L.pop(); } int v = L.top(); L.pop(); K -= deg[v]; use[v] = true; EACH (e, G[v]) if (!use[*e]) { deg[*e]--; if (deg[*e] <= K) L.push(*e); } ans = (ans + (LL)($+1) * (v+1)) % MOD; } printf("%d\n", (int)ans); } int main() { int T; scanf("%d", &T); REP (i, T) MAIN(); return 0; }