#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int t,n,m,v;
int x[1000010];
long long ans;
int main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	scanf("%d",&t);
//	t=4;
	while(t--){
		scanf("%d%d%d",&n,&m,&v);
		long long vv=1LL*v*v%mod;
		memset(x,0,sizeof(x));
		bool flag=1;
		for(int i=1;i<=m;i++){
			int c,d;
			scanf("%d%d",&c,&d);
			if(c>1000010||!flag){
				flag=0;
				continue;
			}
			if(x[c]&&x[c]!=d){
				flag=0;
			}
			x[c]=d;
		}
		if(!flag){
			puts("0");
			continue;
		}
		ans=1;
		int a,b,c,d;
		for(long long i=1;i<n;i++){
			if(x[i]&&!x[i+1]){
				a=1;
				ans=ans*vv%mod;
			}else if(!x[i]&&x[i+1]){
				b=1;
				ans=ans*vv%mod;
			}else if(x[i]&&x[i+1]){
				c=1;
				ans=(ans*((v*(v-1)%mod+1)%mod))%mod;
			}else{
				d=1;
				ans=ans*vv%mod;
			}
		}
		printf("%lld\n",ans);
	}
	
	
	
	
	
	
	
	
	
	return 0;
}
