#include <bits/stdc++.h>
using namespace std;
#define ll long long
void solve(){
int n,k,x;
cin >> n >> k >> x;
n++;
int cnt=0;
int tx=0;
bool visited[n]={};
vector<int> xorx;
for(int i=0;i<n;i++){
if(!visited[i] && (i^x)<n){
cnt++;
visited[i^x]=true;
xorx.push_back(i);
}
tx^=i;
}
if(tx!=0 && tx!=x){
cout << "NO\n";
return;
}
if((tx==0 && k%2!=0) || (tx==x && k%2==0)){
cout <<"NO\n";
return;
}
if(k>cnt){
cout << "NO\n";
return;
}
cout << "YES\n";
bool added[n]={};
for(int ii=0;ii<k-1;ii++){
int i=xorx[ii];
if(i==0 || i==x){
cout << 1 << " " << x << "\n";
} else cout << 2 << " " << i << " " << (i^x) << "\n";
added[i]=true;
added[i^x]=true;
}
vector<int> ladd;
for(int i=1;i<n;i++){
if(!added[i]) ladd.push_back(i);
}
cout << ladd.size() << " ";
for(int i:ladd) cout << i << " ";
cout << "\n";
}
int main(){
int t;
cin >> t;
while(t--) solve();
}
1618C - Paint the Array | 469A - I Wanna Be the Guy |
1294A - Collecting Coins | 1227A - Math Problem |
349A - Cinema Line | 47A - Triangular numbers |
1516B - AGAGA XOOORRR | 1515A - Phoenix and Gold |
1515B - Phoenix and Puzzle | 155A - I_love_username |
49A - Sleuth | 1541A - Pretty Permutations |
1632C - Strange Test | 673A - Bear and Game |
276A - Lunch Rush | 1205A - Almost Equal |
1020B - Badge | 1353A - Most Unstable Array |
770A - New Password | 1646B - Quality vs Quantity |
80A - Panoramix's Prediction | 1354B - Ternary String |
122B - Lucky Substring | 266B - Queue at the School |
1490A - Dense Array | 1650B - DIV + MOD |
1549B - Gregor and the Pawn Game | 553A - Kyoya and Colored Balls |
1364A - XXXXX | 1499B - Binary Removals |