#include<bits/stdc++.h>
#define mod 1000000007
#define int long long
using namespace std;
int t,n,m,v;
struct nd{
	int a,b;
	friend bool operator<(const nd&a,const nd&b){
		return a.a<b.a;
	}
}a[100005],b[100005];
int ksm(int a,int b){
	int res=1;
	while(b){
		if(b&1)res=res*a%mod;
		a=a*a%mod,b>>=1;
	}
	return res;
}
signed main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>t;
	while(t--){
		cin>>n>>m>>v;
		for(int i=1;i<=m;i++)cin>>a[i].a>>a[i].b;
		sort(a+1,a+m+1);
		int lst=0,flag=1,k=0,ans=1;
		for(int i=1;i<=m;i++){
			if(a[i].a!=a[i-1].a)lst=i;
			else flag&=a[i].b==a[lst].b;
		}
		if(!flag){cout<<"0\n";continue;}
		for(int i=1;i<=m;i++)if(a[i].a!=a[i-1].a)b[++k]=a[i];
		for(int i=2;i<=k;i++){
			ans*=(ksm(v*v%mod,b[i].a-b[i-1].a)-ksm(v,b[i].a-b[i-1].a-1)*(v-1)%mod+mod)%mod;
			ans%=mod;
		}
		ans*=ksm(v*v%mod,n-1-(b[k].a-b[1].a)),ans%=mod;
		cout<<ans<<"\n";
	}
	return 0;
}
