#include<bits/stdc++.h>
#define int long long
// #define DEBUG
using namespace std;
const int P = 1e9 + 7;
using pii = pair<int, int>;
namespace CombineMath{
	int ksm(int u, int v){
		// cerr << u << " " << v << "\n";
		int res = 1;
		while(v){
			if(v & 1) res = 1ll * res * u % P;
			u = 1ll * u * u % P;
			v >>= 1;
		}
		return res;
	}
} using namespace CombineMath;
namespace azus{
	int n, m, v;
	pii a[100005];
	int main(){
		cin >> n >> m >> v;
		// cerr << ksm(5, 6) << "\n";
		for(int i = 1; i <= m; i ++)
			cin >> a[i].first >> a[i].second;
		sort(a + 1, a + m + 1);
		int ans = 1;
		for(int i = 1; i <= m; i ++){
			int cans = 1, x = a[i].first;
			if(x == a[i - 1].first && a[i].second != a[i - 1].second) {
				cout << 0 << "\n";
				return 0;
			}
			else if(x == a[i - 1].first && a[i].second == a[i - 1].second) continue;
			if(i == 1){
				int u = x - 1;
				// cerr << "u : " << u << "\n";
				int cv = ksm(v, u);
				cv = 1ll * cv * cv % P;
				ans = 1ll * ans * cv % P;
			} else {
				int u = x - a[i - 1].first - 1;
				// cerr << "u: " << u << "\n";
				int cv = ksm(v, u);
				cv = 1ll * cv * (v - 1) % P;
				cans = ksm(v, u + 1);
				cans = 1ll * cans * cans % P;
				cans = cans + P - cv;
				cans %= P;
				ans = 1ll * ans * cans % P;
			}
		}
		int x = a[m].first;
		int u = n - x;
		// cerr << "u: " << u << "\n";
		int cv = ksm(v, u);
		cv = 1ll * cv * cv % P;
		ans = 1ll * ans * cv % P;
		cout << ans << "\n";
		if(114514 == 0x0d000721) cout << "BlckCrw Nai Long and SError_ is yuzu divide.";
		return 0;
	}
}
signed main(){
#ifndef DEBUG
	freopen("assign.in", "r", stdin);
	freopen("assign.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
#endif
	int T = 1;
	cin >> T;
	while(T --){
		azus::main();
	}
	return 0;
}
/*
9:17:11 开题
我不想成为乃龙！！！！！！！！！
好像是我擅长的组合数学提！
好耶！
这感觉就像无亚凹日向 15 爆 13 无 miss 或者 15 爆 14 时打出了 15 爆 15 一样。

9:41:30 写完啦！开条
9:48:25 怎么这么顺利，一遍把大衍历过完了。
这个也不会拍啊。
还有三小时，后面还有两个提，又是在我。
其实 200 一等已经稳了，但是这其实很危险
对线肯定还在高不可攀的地方，说不定现在人 Shui_dream 已经 AK 了（（（
呜呜 Shui_dream 大神/bx/bx/bx/ll/ll/ll
*/