#include<bits/stdc++.h>
using namespace std;
using LL=long long;
const LL MOD=1e9+7;
const int N=1e5+5,M=15;
int pd,T,n,m,c[N],d[N],bz[N],g[N][M];
LL v,f[N],ans;
void Init()
{
	if(pd)
	{
		for(int i=0;i<=n;++i)
			f[i]=0;	
	}
	else
	{
		for(int i=1;i<=n;++i)	bz[i]=0;
		for(int i=0;i<=n+1;++i)
			for(int j=1;j<=v;++j)
				g[i][j]=0;
	}
	pd=1,ans=0;
}
int main()
{
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	scanf("%d",&T);
	while(T--)
	{
//		Init();
		ans=0,pd=1;
		scanf("%d%d%lld",&n,&m,&v);
		if(m!=n)	pd=0;
		for(int i=1;i<=m;++i)
		{
			scanf("%d%d",&c[i],&d[i]),bz[c[i]]=d[i];
			if(c[i]!=i)	pd=0;
		}
		if(pd)
		{
			for(int i=0;i<=n+1;++i)	f[i]=0;
			f[0]=1;
			for(int i=0;i<=n-2;++i)
				f[i+1]=(f[i]*v%MOD*(v-1)%MOD+f[i])%MOD;
			printf("%lld\n",f[n-1]);
		}
		/*else
		{
			for(int i=1;i<=v;++i)
			{
				if(bz[1]&&bz[1]!=i)	g[1][i]=0;
				else	g[1][i]=1;
			}
			for(int i=2;i<=n;++i)
			{
				for(int j=1;j<=v;++j)
				{
					if(bz[i]&&bz[i]!=j)	continue;
					for(int k=1;k<=v;++k)
					{
						for(int a=1;a<=v;++a)
						{
							if(a==k)
								g[i][j]=(g[i][j]+g[i-1][k])%MOD;
							else
								g[i][j]=(g[i][j]+g[i-1][k]*v%MOD)%MOD;
						}
					}
				}
			}
			for(int i=1;i<=v;++i)	ans=(ans+g[n][i])%MOD;
			printf("%lld\n",ans);
		}*/
	}
	return 0;
}
