#include<bits/stdc++.h>
using namespace std;
long long mod=1e9+7,t,n,m,v,h[19997][1267],mod1=19997,mod2=1267;
long long fastmi(int a,int pow){
	if(pow==0) return 1;
	if(pow==1) return a%mod;
	long long b=fastmi(a,pow/2)*fastmi(a,pow/2);
	b=b%mod;
	if(pow%2){
		b*=a;
		return b%mod;
	}
	else return b;
}
int main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	cin>>t;
	while(t--){
		int xz=0,kuai=0;
		memset(h,0,sizeof(h));
		bool valid=true;
		cin>>n>>m>>v;
		for(int i=0;i<m;i++){
			int a,b;
			scanf("%d %d",&a,&b);
			if(h[a%mod1][a%mod2]==0){
				h[a%mod1][a%mod2]=b;xz++;
			}
			else if(h[a%mod1][a%mod2]!=b){
				valid=false;
				break;
			}
		}
		if(!valid) cout<<0<<endl;
		else{
			long long c=v*v-v+1,d=v*v;
			c%=mod;d%=mod;
			c=fastmi(c,xz-1);d=fastmi(d,n-xz);
			c*=d;
			cout<<c%mod<<endl;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
} 
