#include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <vector>
using namespace std;
long long a[100001];
long long a_q[100001];
void solve() {
long long n, k, p, q;
cin >> n >> k >> p >> q;
vector<long long> c0(n);
vector<long long> c1(n);
vector<long long> cmin(n);
long long total_min = 0;
for (int i = 0; i < n; i++) {
long long a;
cin >> a;
c0[i] = a % p;
c1[i] = (a % q) % p;
cmin[i] = min(c0[i], c1[i]);
total_min += cmin[i];
}
vector<long long> pref_c0(n + 1, 0);
vector<long long> pref_c1(n + 1, 0);
vector<long long> pref_cmin(n + 1, 0);
for (int i = 0; i < n; i++) {
pref_c0[i + 1] = pref_c0[i] + c0[i];
pref_c1[i + 1] = pref_c1[i] + c1[i];
pref_cmin[i + 1] = pref_cmin[i] + cmin[i];
}
long long ans = -1;
for (int i = 0; i <= n - k; i++) {
long long cost0 = total_min - (pref_cmin[i + k] - pref_cmin[i]) +
(pref_c0[i + k] - pref_c0[i]);
if (ans == -1 || cost0 < ans)
ans = cost0;
long long cost1 = total_min - (pref_cmin[i + k] - pref_cmin[i]) +
(pref_c1[i + k] - pref_c1[i]);
if (ans == -1 || cost1 < ans)
ans = cost1;
}
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}