Beginner800

Mathematical Circus

Codeforces
View on Codeforces
Time: 1 secondMemory: 256 megabytes

A new entertainment has appeared in Buryatia — a mathematical circus! The magician shows two numbers to the audience — n and k, where n is even . Next, he takes all the integers from 1 to n, and splits them all into pairs (a, b) (each integer must be in exactly one pair) so that for each pair the integer (a + k) · b is divisible by 4 ( note that the order of the numbers in the pair matters ), or reports that, unfortunately for viewers, such a split is impossible.

Burenka really likes such performances, so she asked her friend Tonya to be a magician, and also gave him the numbers n and k.

Tonya is a wolf, and as you know, wolves do not perform in the circus, even in a mathematical one. Therefore, he asks you to help him. Let him know if a suitable splitting into pairs is possible, and if possible, then tell it.

Input

The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. The following is a description of the input data sets.The single line of each test case contains two integers n and k (2 ≤ n ≤ 2 · 10^5, 0 ≤ k ≤ 10^9, n is even) — the number of integers and the number being added k.It is guaranteed that the sum of n over all test cases does not exceed 2 · 10^5.

Output

For each test case, first output the string "YES" if there is a split into pairs, and "NO" if there is none.If there is a split, then in the following n2 lines output pairs of the split, in each line print 2 numbers — first the integer a, then the integer b.

Examples

Input
4 4 1 2 0 12 10 14 11
Output
YES 1 2 3 4 NO YES 3 4 7 8 11 12 2 1 6 5 10 9 YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Note

In the first test case, splitting into pairs (1, 2) and (3, 4) is suitable, same as splitting into (1, 4) and (3, 2).In the second test case, (1 + 0) · 2 = 1 · (2 + 0) = 2 is not divisible by 4, so there is no partition.

constructive algorithmsmath

Discussion

(0)
Sign in to join the discussion.
Loading editor...
0 online