#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=1e5+10;
inline int qpow(int x,int y=mod-2){
	int r=1;
	for(;y;x=(ll)x*x%mod,y>>=1) if(y&1) r=(ll)r*x%mod;
	return r;
}
int n,m,v;
vector<pair<int,int>> a;
void solve(){
	scanf("%d%d%d",&n,&m,&v);
	a.clear();
	for(int i=1;i<=m;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		a.push_back({u,v});
	}
	sort(a.begin(),a.end());
	int lst=0,lstval=0,ans=1;
	for(auto p:a){
		int plc=p.first,val=p.second;
		if(plc==lst){
			if(val!=lstval){
				puts("0");
				return;
			}
		}else{
			if(lst==0){
				ans=(ll)ans*qpow((ll)v*v%mod,plc-1)%mod;
			}else{
				ans=ans*(qpow((ll)v*v%mod,plc-lst)-(ll)qpow(v,plc-lst-1)*(v-1)%mod+mod)%mod;
			}
		}
		lst=plc; lstval=val;
	}
	ans=(ll)ans*qpow((ll)v*v%mod,n-lst)%mod;
	printf("%d\n",ans);
}

int main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	int tc;
	scanf("%d",&tc);
	while(tc--){
		solve();
	}
}
