from collections import deque, defaultdict, Counter from bisect import bisect_left, bisect_right from itertools import permutations, combinations, groupby from heapq import heappop, heappush import math, sys input = lambda: sys.stdin.readline().rstrip("\r\n") def printl(li, sep=" "): print(sep.join(map(str, li))) def yn(flag): print(Yes if flag else No) _int = lambda x: int(x)-1 MOD = 998244353 #10**9+7 INF = 1<<60 Yes, No = "Yes", "No" def rotate(st, k): l = st[:k] r = st[k:] return r[::-1] + l for _ in range(int(input())): N, K = map(int, input().split()) if N == 2: print(No) continue if N == 3: if K == 2: print(Yes) print(6, 4, 5) print(5, 2, 3) print(3, 1, 6) else: print(No) continue if N == K or K == 1: print(No) elif K == 2: print(Yes) A = [1] + rotate([i for i in range(N+2, 2*N)], 0) + [N] B = [N] + rotate([i for i in range(2*N+2, 3*N)], 0) + [2*N] C = [2*N] + rotate([i for i in range(2, N)], 2) + [1] printl(A) printl(B) printl(C) else: print(Yes) A = [i+1 for i in range(N)] A = [A[0]] + rotate(A[1:-1], K-2) + [A[-1]] B = [i+N for i in range(N)] B = [B[0]] + rotate(B[1:-1], K-2) + [B[-1]] C = [i-1+2*N for i in range(N-1)] + [1] C = [C[0]] + rotate(C[1:-1], K-1) + [C[-1]] printl(A) printl(B) printl(C)