#include<bits/stdc++.h>
using namespace std;
int t,n,m,v,x[1000006];
bool z[1000006][15];
int mod=1e9+7;
long long po(long long a,long long b){
	long long r=1;
	while(b!=1){
		if(b&1){
			r=r*a%mod;
		}
		a=a*a%mod;
		b/=2;
	}
	return a*r%mod;
}
int main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m>>v;
		int pd=0;
		if(m<=1){
			int c,d;
			cin>>c>>d;
			cout<<po(v*v,n-1)<<"\n";
			continue;
		}
		for(int i=1;i<=m;i++){
			int c,d;
			cin>>c>>d;
			if(z[c][t]==0){
				x[c]=d;
				z[c][t]=1;
			}
			else{
				if(d!=x[c]){
					pd=1;
				}
			}
		}
		if(pd==1){
			cout<<0<<"\n";
			continue;
		}
		if(n==m){
			cout<<po(v*v-v+1,n-1)<<"\n";
		}
	}
	return 0;
}
