#include<cstdio>
#include<map>
#include<vector>
using namespace std;
const long long mod=1000000007;
long long n,m,v,c[100010],d[100010],ans;
map<int,int>c_appear;
struct query
{
	long long n,m,v;
};
vector<query>queries;
namespace pts_25
{
	long long a[20],b[20],x[20],cur_a_b_able=0;
	void give_x_val()
	{
		for(long long i=1;i<=n;i++) x[i]=0;
		for(long long i=1;i<=m;i++)
		{
			if(x[c[i]]!=0&&x[c[i]]!=d[i]) return;
			x[c[i]]=d[i];
		}
		for(long long i=1;i<n;i++)
		{
			if(x[i]==a[i])
			{
				if(x[i+1]!=0&&x[i+1]!=b[i]) return;
				x[i+1]=b[i];
			}
			else x[i]=1;
		}
		cur_a_b_able=1;
		return;
	}
	void give_b_val(long long now)
	{
		if(now==n)
		{
			cur_a_b_able=0;
			give_x_val();
			if(cur_a_b_able) ans=(ans+1)%mod;
			return;
		}
		for(long long i=1;i<=v;i++)
		{
			b[now]=i;
			give_b_val(now+1);
		}
	}
	void give_a_val(long long now)
	{
		if(now==n)
		{
			give_b_val(1);
			return;
		}
		for(long long i=1;i<=v;i++)
		{
			a[now]=i;
			give_a_val(now+1);
		}
	}
}
long long qpow(long long x,long long y)
{
	long long res=1;
	while(y)
	{
		if(y&1) res=(res*x)%mod;
		x=x*x%mod;
		y>>=1;
	}
	return res;
}
int main()//所以这是不是别样的找规律大战
{
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	long long T;
	scanf("%lld",&T);
	while(T--)
	{
		c_appear.clear();
		ans=0;
		scanf("%lld%lld%lld",&n,&m,&v);
		//只有 n,去重后的 m,v 会对答案造成影响
		int fact_m=m;
		for(long long i=1;i<=m;i++)
		{
			scanf("%lld%lld",&c[i],&d[i]);
			if(!c_appear.count(c[i])) c_appear[c[i]]=d[i];
			else
			{
				if(c_appear[c[i]]!=d[i])
					ans=-1;
				fact_m--;
			}
		}
		if(ans==-1)
		{
			printf("0\n");
			continue;
		}
		if(v<=3)
		{
			pts_25::give_a_val(1);
			printf("%lld\n",ans);
		}
		else if(m==1)
		{
			long long ans=qpow(v,2*n-2);
			printf("%lld\n",ans);
		}
		else if(m==n)
		{
			long long tmp=v*v-v+1;
			tmp%=mod;
			tmp=qpow(tmp,n-1);
			printf("%lld\n",tmp);
		}
		else queries.push_back(query{n,fact_m,v});
	}
	//心有余而力不足
	//当 fact_m 为奇数时答案是某个数的平方 否则就是 sqrt(ans_(m-1))*sqrt(ans_(m+1))
	//但是这个东西怎么预处理啊
	//应该是基于做差而不是基于做乘法的???
}