//teja349 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //setbase - cout << setbase (16); cout << 100 << endl; Prints 64 //setfill - cout << setfill ('x') << setw (5); cout << 77 << endl; prints xxx77 //setprecision - cout << setprecision (14) << f << endl; Prints x.xxxx //cout.precision(x) cout<=b;i--) #define pb push_back #define mp make_pair #define vi vector< int > #define vl vector< ll > #define ss second #define ff first #define ll long long #define pii pair< int,int > #define pll pair< ll,ll > #define sz(a) a.size() #define inf (1000*1000*1000+5) #define all(a) a.begin(),a.end() #define tri pair #define vii vector #define vll vector #define viii vector #define mod (1000*1000*1000+7) #define pqueue priority_queue< int > #define pdqueue priority_queue< int,vi ,greater< int > > #define flush fflush(stdout) #define primeDEN 727999983 mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); // find_by_order() // order_of_key typedef tree< int, null_type, less, rb_tree_tag, tree_order_statistics_node_update> ordered_set; vector adj(12345); vector vec(12345); int dp[12345],dp1[12345]; int ans[12345]; int member[12345]; int main(){ std::ios::sync_with_stdio(false); cin.tie(NULL); int t; cin>>t; while(t--){ int n,m,k; cin>>n>>m>>k; int i; int u,v; rep(i,n){ adj[i].clear(); } rep(i,k+2){ member[i]=-1; } rep(i,m){ cin>>u>>v; u--; v--; adj[u].pb(v); adj[v].pb(u); } int q; cin>>q; int tim; int j; int flag=0; rep(i,q){ cin>>u>>tim; u--; if(member[tim]==-1){ member[tim]=u; } else if(member[tim]!=u){ flag=1; } } if(flag){ cout<<0<=mod) dp1[i]-=mod; } } rep(i,n){ dp[i]=dp1[i]; } } int sumi=0; rep(i,n){ sumi+=dp[i]; if(sumi>=mod) sumi-=mod; } cout<