#include #include #define chmin(x,y) (x) = min((x),(y)) #define chmax(x,y) (x) = max((x),(y)) using namespace std; using namespace atcoder; using ll = long long; const ll mod = 998244353; using mint = modint998244353; using Graph = vector>; const vector dx ={1,0,-1,0}, dy = {0,1,0,-1}; // https://betrue12.hateblo.jp/entry/2020/09/22/194541 struct S{ int value; int size; }; using F = int; const F ID = int(2e9); S op(S a, S b){ return {a.value+b.value, a.size+b.size}; } S e(){ return {0, 0}; } S mapping(F f, S x){ if(f != ID) x.value = x.size * f; return x; } F composition(F f, F g){ return (f == ID ? g : f); } F id(){ return ID; } int main() { int t; cin >> t; while(t--){ // input int K,M,N; cin >> K >> M >> N; assert(M <= K && N <= K); // solve: simulation vector used(K); vector ans; int now = 0; while(now < K && ans.size() < N){ int coder = (now+M-1) % K; if(!used[now] && !used[coder] && now != coder){ used[now] = 1; used[coder] = 1; ans.push_back(now); } now++; } // output cout << (ans.size() == N ? "Yes" : "No") << endl; if(ans.size() == N){ for(int i = 0; i < N; i++){ if(i) cout << " "; cout << ans[i]+1; } cout << endl; } } }