#include<bits/stdc++.h>
#define fast ios::sync_with_stdio(false); cin.tie(nullptr); cin.tie(nullptr);
#define ll long long
using namespace std;
class graph {
unordered_map<ll, list<ll>> adjList;
public:
void insert(ll u, ll v) {
adjList[u].push_front(v);
adjList[v].push_front(u);
}
ll bfs(ll src, vector<ll>& visited) {
queue<ll> q;
ll roads = 0;
visited[src] = true;
q.push(src);
while (!q.empty()) {
ll node = q.front();
q.pop();
for (auto padosi : adjList[node]) {
if (!visited[padosi]) {
visited[padosi] = true;
q.push(padosi);
roads++;
}
}
}
return roads;
}
ll religiousPeople(ll n, ll tempCost, ll roadCost) {
if (tempCost < roadCost)
return (tempCost * n);
ll cost = 0;
vector<ll> visited(n + 1, false);
for (auto ele : adjList) {
ll node = ele.first;
if (!visited[node]) {
cost += (bfs(node, visited) * roadCost) + tempCost;
}
}
for (ll i = 1; i <= n; i++)
if (!visited[i])
cost += tempCost;
return cost;
}
};
int main() {
fast
ll t;
cin >> t;
while (t--) {
graph g;
ll n, e, tempCost, roadCost;
cin >> n >> e >> tempCost >> roadCost;
while (e--) {
ll u, v;
cin >> u >> v;
g.insert(u, v);
}
cout << g.religiousPeople(n, tempCost, roadCost) << endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgZmFzdCBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7IGNpbi50aWUobnVsbHB0cik7CiNkZWZpbmUgbGwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgZ3JhcGggewoJdW5vcmRlcmVkX21hcDxsbCwgbGlzdDxsbD4+IGFkakxpc3Q7CgogIHB1YmxpYzoKCgl2b2lkIGluc2VydChsbCB1LCBsbCB2KSB7CgkJYWRqTGlzdFt1XS5wdXNoX2Zyb250KHYpOwoJCWFkakxpc3Rbdl0ucHVzaF9mcm9udCh1KTsKCX0KCglsbCBiZnMobGwgc3JjLCB2ZWN0b3I8bGw+JiB2aXNpdGVkKSB7CgoJCXF1ZXVlPGxsPiBxOwoJCWxsIHJvYWRzID0gMDsKCQl2aXNpdGVkW3NyY10gPSB0cnVlOwoJCXEucHVzaChzcmMpOwoKCQl3aGlsZSAoIXEuZW1wdHkoKSkgewoJCQlsbCBub2RlID0gcS5mcm9udCgpOwoJCQlxLnBvcCgpOwoKCQkJZm9yIChhdXRvIHBhZG9zaSA6IGFkakxpc3Rbbm9kZV0pIHsKCQkJCWlmICghdmlzaXRlZFtwYWRvc2ldKSB7CgkJCQkJdmlzaXRlZFtwYWRvc2ldID0gdHJ1ZTsKCQkJCQlxLnB1c2gocGFkb3NpKTsKCQkJCQlyb2FkcysrOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gcm9hZHM7Cgl9CgoJbGwgcmVsaWdpb3VzUGVvcGxlKGxsIG4sIGxsIHRlbXBDb3N0LCBsbCByb2FkQ29zdCkgewoJCWlmICh0ZW1wQ29zdCA8IHJvYWRDb3N0KQoJCQlyZXR1cm4gKHRlbXBDb3N0ICogbik7CgoJCWxsIGNvc3QgPSAwOwoJCXZlY3RvcjxsbD4gdmlzaXRlZChuICsgMSwgZmFsc2UpOwoKCQlmb3IgKGF1dG8gZWxlIDogYWRqTGlzdCkgewoJCQlsbCBub2RlID0gZWxlLmZpcnN0OwoJCQlpZiAoIXZpc2l0ZWRbbm9kZV0pIHsKCQkJCWNvc3QgKz0gKGJmcyhub2RlLCB2aXNpdGVkKSAqIHJvYWRDb3N0KSArIHRlbXBDb3N0OwoJCQl9CgkJfQoKCQlmb3IgKGxsIGkgPSAxOyBpIDw9IG47IGkrKykKCQkJaWYgKCF2aXNpdGVkW2ldKQoJCQkJY29zdCArPSB0ZW1wQ29zdDsKCgkJcmV0dXJuIGNvc3Q7Cgl9Cn07CmludCBtYWluKCkgewoJZmFzdAoJbGwgdDsKCWNpbiA+PiB0OwoJd2hpbGUgKHQtLSkgewoJCWdyYXBoIGc7CgkJbGwgbiwgZSwgdGVtcENvc3QsIHJvYWRDb3N0OwoJCWNpbiA+PiBuID4+IGUgPj4gdGVtcENvc3QgPj4gcm9hZENvc3Q7CgkJd2hpbGUgKGUtLSkgewoJCQlsbCB1LCB2OwoJCQljaW4gPj4gdSA+PiB2OwoJCQlnLmluc2VydCh1LCB2KTsKCQl9CgkJY291dCA8PCBnLnJlbGlnaW91c1Blb3BsZShuLCB0ZW1wQ29zdCwgcm9hZENvc3QpIDw8IGVuZGw7Cgl9Cgp9