#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// Hàm so sánh dùng để sắp xếp mảng Y theo thứ tự tăng dần
bool compare(int a, int b) {
return a > b;
}
int countPairs(vector<int>& X, vector<int>& Y) {
int n = X.size();
int m = Y.size();
for(int i = 0; i < n;i++){
cout<<X[i]<<" ";
}
cout<<"xxx"<<endl;
// Sắp xếp mảng Y theo thứ tự giảm dần
sort(Y.begin(), Y.end(), compare);
for(int i = 0; i < m;i++){
cout<<Y[i]<<" ";
}
cout<<"yyy"<<endl;
int count = 0;
// Duyệt qua từng phần tử trong mảng X
for (int i = 0; i < n; i++) {
// Tìm vị trí đầu tiên trong mảng Y mà x^Y[i] > Y[i]^x
int idx = upper_bound(Y.begin(), Y.end(), X[i], greater<int>()) - Y.begin();
cout<<X[i]<<" "<<idx<<" "<<m-idx;
cout<<endl;
// Các phần tử từ idx đến cuối của mảng Y thỏa mãn điều kiện
count += m - idx;
}
return count;
}
int main() {
int t;
cin>>t;
while(t--){
int n, m;
cin >> n >> m;
vector<int> X(n);
vector<int> Y(m);
for (int i = 0; i < n; i++) {
cin >> X[i];
}
for (int i = 0; i < m; i++) {
cin >> Y[i];
}
int result = countPairs(X, Y);
cout << "So cap (x, y) thoa dieu kien: " << result << endl;
}
return 0;
}