#include #include using ll = long long; using namespace std; const int MOD = 1e9 + 7; ll p(ll b, ll e) { ll res = 1; b %= MOD; while (e > 0) { if (e % 2 == 1) res = (res * b) % MOD; b = (b * b) % MOD; e /= 2; } return res; } void solve() { ll n; int m; ll v; cin >> n >> m >> v; map mc; for (int i = 0; i < m; ++i) { int c, d; cin >> c >> d; if (mc.count(c) && mc[c] != d) { for (int j = i + 1; j < m; ++j) cin >> c >> d; cout << 0 << endl; return; } mc[c] = d; } if (m == 0) { if (n == 1) { cout << 1 << endl; } else { cout << p(v, (n - 1) * 2) << endl; } return; } ll tot = 1; ll vmod = v % MOD; int lp = 0; for (auto const& [idx, val] : mc) { ll len = idx - lp; if (len > 0) { ll s; if (lp == 0) { s = p(vmod, (len - 1) * 2); } else { ll v2len = p(vmod, len * 2); ll vlen = p(vmod, len); ll vlenm1 = p(vmod, len - 1); s = (v2len - vlen + vlenm1 + MOD) % MOD; } tot = (tot * s) % MOD; } lp = idx; } if (lp < n) { ll len = n - lp; ll s = p(vmod, len * 2); tot = (tot * s) % MOD; } cout << tot << endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(nullptr); int t; cin >> t; while (t--) { solve(); } }