#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;
}