#include<bits/stdc++.h>
using namespace std;
const int cs=1e5+10,ccss=1e9+7;
struct ccf{
	long long c,d;
} f[cs];
long long n,m,v,t,x[cs],a[13],b[13];
long long ans=1;


void abc(int x){
	if(x==n) efg();
	a[x]=1;
	b[x]=1;
	abc(x+1);
	a[x]=2;
	abc(x+1);
	b[x]=2;
	abc(x+1);
	a[x]=1;
	abc(x+1);
}

int main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m>>v;
		for(int i=1;i<=m;i++){
			cin>>f[i].c>>f[i].d;
			x[f[i].c]=f[i].d;
		}
		if(m!=n){
			if(m==1) for(long long i=1;i<=2*n-2;i++){
				ans=((ans+ccss)*(v+ccss))%ccss;
			}
			cout<<ans<<'\n';
			ans=1;
		}else{
			for(long long i=1;i<=n-1;i++){
				ans=ans*(((v-1)*v)+1)%ccss;
			}
			cout<<ans<<'\n';
			ans=1;
		}
		
	}
	
	return 0;
}

