#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int T,n,m,v,a[N],b[N],ans;
bool u[N];
void dfs2(int k)
{
	if(k==n+1)
	{
		bool flag=true;
		for(int i=1;i<n;i++)
		{
			if(a[i]==b[i]&&a[i+1]!=b[i+n-1])
			{
				flag=false;
				break;
			}
		}
		if(flag)ans++;
		return;
	}
	if(a[k])dfs2(k+1);
	else{
		for(int i=1;i<=v;i++)
		{
			a[k]=i;
			dfs2(k+1);
		} 
	}
}
void dfs1(int k)
{
	if(k==n*2-1)
	{
		dfs2(1);
		return;
	}
	for(int i=1;i<=v;i++)
	{
		b[k]=i;
		dfs1(k+1);
	}
}

int main(){
	freopen("assign.in","r",stdin);
	freopen("assign.out","w",stdout);
	cin>>T;
	while(T--)
	{
		ans=0;
		cin>>n>>m>>v;
		for(int i=1;i<=m;i++)
		{
			int x,y;
			cin>>x>>y;
			a[x]=y;
		}
		dfs1(1);
		cout<<ans<<endl;
	}
	return 0;
}
