Олимпиадный тренинг

Задача . B. Математический цирк


В Бурятии появилось новое развлечение — математический цирк! Фокусник показывает зрителям два числа — \(n\) и \(k\), где \(n\) — чётное. Далее он берёт все числа от \(1\) до \(n\) и разбивает их все на пары \((a, b)\) (каждое число должно оказаться ровно в одной паре) так, чтобы для каждой пары число \((a + k) \cdot b\) делилось на \(4\) (обратите внимание, что порядок чисел в паре имеет значение), или сообщает, что, к сожалению для зрителей, такое разбиение невозможно.

Бурёнке очень нравятся такие представления, поэтому она попросила своего друга Тоню побыть фокусником, а также дала ему числа \(n\) и \(k\).

Тоня — волк, а как известно, волки в цирке не выступают, даже в математическом. Поэтому он просит вас помочь ему. Сообщите, возможно ли подходящее разбиение на пары, и если возможно, то сообщите его.

Входные данные

Первая строка содержит одно целое число \(t\) (\(1 \leq t \leq 10^4\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Единственная строка каждого набора входных данных содержит два целых числа \(n\) и \(k\) (\(2 \leq n \leq 2 \cdot 10^5\), \(0 \leq k \leq 10^9\), \(n\) — чётное) — количество чисел и прибавляемое число \(k\).

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(2 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных сначала выведите строку «YES», если разбиение на пары существует, и «NO», если его нет.

Если разбиение существует, то в следующих \(\frac{n}{2}\) строках выведите пары разбиения, в каждой строке по \(2\) числа — сначала очередное число \(a\), потом число \(b\).

Примечание

В первом наборе входных данных разбиение на пары \((1, 2)\) и \((3, 4)\) подходит, как и разбиение \((1, 4)\) и \((3, 2)\).

Во втором наборе входных данных \((1 + 0) \cdot 2 = 1 \cdot (2 + 0) = 2\) не делится на \(4\), поэтому разбиения нет.


Примеры
Входные данныеВыходные данные
1 4
4 1
2 0
12 10
14 11
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

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя