namespace AtCoder; #nullable enable using System.Numerics; static class Extensions { public static T[] Repeat(this int time, Func F) => Enumerable.Range(0, time).Select(_ => F()).ToArray(); } class AtCoder { object? Solve() { var t = Int(); var ans = new List?[t]; static List? F(int k, int m, int n) { var res = new List(); var s = new bool[k]; for (var x = 0; x < k; x++) { if (s[x]) continue; var f = false; for (var i = x; !s[i] && (i != x || !f); i = (i + m * 2 - 2) % k) { f = true; if (res.Count == n) break; var j = (i + m - 1) % k; if (i == j) continue; if (s[i] || s[j]) continue; s[i] = s[j] = true; res.Add(i); } } // for (var i = 0; i < k; i++) // { // if (res.Count == n) break; // var j = (i + m - 1) % k; // if (i == j) continue; // if (s[i] || s[j]) continue; // s[i] = s[j] = true; // res.Add(i); // } if (res.Count == n) return res; return null; } for (var i = 0; i < t; i++) ans[i] = F(Int(), Int(), Int()); foreach (var lns in ans) { if (lns == null) { Out("No"); continue; } Out("Yes"); for (var i = 0; i < lns.Count; i++) lns[i]++; Out(lns, " "); } return null; } public static void Main() => new AtCoder().Run(); public void Run() { var res = Solve(); if (res != null) { if (res is bool yes) res = yes ? "Yes" : "No"; sw.WriteLine(res); } sw.Flush(); } string[] input = Array.Empty(); int iter = 0; readonly StreamWriter sw = new(Console.OpenStandardOutput()) { AutoFlush = false }; string String() { while (iter >= input.Length) (input, iter) = (Console.ReadLine()!.Split(' '), 0); return input[iter++]; } T Input() where T : IParsable => T.Parse(String(), null); int Int() => Input(); void Out(object? x, string? separator = null) { separator ??= Environment.NewLine; if (x is System.Collections.IEnumerable obj and not string) { var firstLine = true; foreach (var item in obj) { if (!firstLine) sw.Write(separator); firstLine = false; sw.Write(item); } } else sw.Write(x); sw.WriteLine(); } }