#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n, m, x, y;
cin >> n >> m >> x >> y;
vector<int> arr(n + 1, 0); // 资源状态,0表示未上锁,1表示上锁
int count_left = 0, count_right = 0;
// 初始化左右区间的可访问资源数
// 注意:如果x>=y,左右区间可能有重叠
for (int i = 1; i <= x; i++) {
count_left++; // 初始都未上锁
}
for (int i = y; i <= n; i++) {
count_right++; // 初始都未上锁
}
for (int cnt = 1; cnt <= m; cnt++) {
int p;
cin >> p;
// 更新资源状态
if (arr[p] == 0) {
arr[p] = 1; // 上锁
// 如果p在左区间内,左区间可访问数减1
if (p <= x) {
count_left--;
}
// 如果p在右区间内,右区间可访问数减1
if (p >= y) {
count_right--;
}
} else {
arr[p] = 0; // 解锁
// 如果p在左区间内,左区间可访问数加1
if (p <= x) {
count_left++;
}
// 如果p在右区间内,右区间可访问数加1
if (p >= y) {
count_right++;
}
}
cout << count_left << ' ' << count_right << '\n';
}
}
return 0;
}