Codeforces Round 814 (Div. 2) |
---|
Закончено |
В Бурятии появилось новое развлечение — математический цирк! Фокусник показывает зрителям два числа — $$$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$$$.
44 12 012 1014 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
В первом наборе входных данных разбиение на пары $$$(1, 2)$$$ и $$$(3, 4)$$$ подходит, как и разбиение $$$(1, 4)$$$ и $$$(3, 2)$$$.
Во втором наборе входных данных $$$(1 + 0) \cdot 2 = 1 \cdot (2 + 0) = 2$$$ не делится на $$$4$$$, поэтому разбиения нет.
Название |
---|