#include <bits/stdc++.h>
#define ll long long int
#define endl "\n"
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define ump unordered_map
#define yes cout<<"YES"<<"\n"
#define no cout<<"NO"<<"\n"
const ll M = 998244353;
const ll N = 2e5 + 10;
const ll INF = 1e9+7;
const int dx[] = {-1, 1, 0, 0};
const int dy[] = {0, 0, -1, 1};
using namespace std;
vector<ll> graph[N];
ll visited[N];
void reset() {
for(ll i = 0; i < N; i++) {
graph[i].clear();
visited[i] = 0;
}
}
ll dfs(ll vertex) {
visited[vertex] = 1;
ll ct = 1;
for(ll child : graph[vertex]) {
if(visited[child]) continue;
ct += dfs(child);
}
return ct;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
ll t; cin >> t;
while(t--) {
reset();
ll n, m, l, r; cin >> n >> m >> l >> r;
for(ll i = 0; i < m; i++) {
ll v1, v2;
cin >> v1 >> v2;
graph[v1].pb(v2);
graph[v2].pb(v1);
}
ll cost = 0;
for(ll i = 1; i <= n; i++) {
if(!visited[i]) {
ll num = dfs(i);
ll need = l + r*(num-1);
cost += need;
}
}
cout<<min(n*l, cost)<<endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSB1bXAgdW5vcmRlcmVkX21hcAojZGVmaW5lIHllcyBjb3V0PDwiWUVTIjw8IlxuIgojZGVmaW5lIG5vIGNvdXQ8PCJOTyI8PCJcbiIKY29uc3QgbGwgTSA9IDk5ODI0NDM1MzsKY29uc3QgbGwgTiA9IDJlNSArIDEwOwpjb25zdCBsbCBJTkYgPSAxZTkrNzsKY29uc3QgaW50IGR4W10gPSB7LTEsIDEsIDAsIDB9OyAKY29uc3QgaW50IGR5W10gPSB7MCwgMCwgLTEsIDF9OyAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgp2ZWN0b3I8bGw+IGdyYXBoW05dOwpsbCB2aXNpdGVkW05dOwoKdm9pZCByZXNldCgpIHsKICAgIGZvcihsbCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGdyYXBoW2ldLmNsZWFyKCk7CiAgICAgICAgdmlzaXRlZFtpXSA9IDA7CiAgICB9Cn0KCmxsIGRmcyhsbCB2ZXJ0ZXgpIHsKICAgIHZpc2l0ZWRbdmVydGV4XSA9IDE7CiAgICBsbCBjdCA9IDE7CiAgICBmb3IobGwgY2hpbGQgOiBncmFwaFt2ZXJ0ZXhdKSB7CiAgICAgICAgaWYodmlzaXRlZFtjaGlsZF0pIGNvbnRpbnVlOwogICAgICAgIGN0ICs9IGRmcyhjaGlsZCk7CiAgICB9CiAgICByZXR1cm4gY3Q7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgbGwgdDsgY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pIHsKICAgICAgICByZXNldCgpOwogICAgICAgIGxsIG4sIG0sIGwsIHI7IGNpbiA+PiBuID4+IG0gPj4gbCA+PiByOwogICAgICAgIGZvcihsbCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgICAgICBsbCB2MSwgdjI7CiAgICAgICAgICAgIGNpbiA+PiB2MSA+PiB2MjsKICAgICAgICAgICAgZ3JhcGhbdjFdLnBiKHYyKTsKICAgICAgICAgICAgZ3JhcGhbdjJdLnBiKHYxKTsKICAgICAgICB9CiAgICAgICAgbGwgY29zdCA9IDA7CiAgICAgICAgZm9yKGxsIGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBpZighdmlzaXRlZFtpXSkgewogICAgICAgICAgICAgICAgbGwgbnVtID0gZGZzKGkpOwogICAgICAgICAgICAgICAgbGwgbmVlZCA9IGwgKyByKihudW0tMSk7CiAgICAgICAgICAgICAgICBjb3N0ICs9IG5lZWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dDw8bWluKG4qbCwgY29zdCk8PGVuZGw7CiAgICB9Cn0=