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

Задача . C. ОКЕЯ


Задача

Темы: Конструктив *1000
People worry that computers will get too smart and take over the world, but the real problem is that they're too stupid and they've already taken over the world.
— Pedro Domingos

Вы работаете в известном универмаге, который использует передовые технологии и машинный труд — а, иначе говоря, роботов!

Отдел, в котором вы работаете, продает \(n \cdot k\) товаров. Первый товар стоит \(1\) доллар, второй — \(2\) доллара, и так далее: \(i\)-й товар стоит \(i\) долларов. Товары расположены на полках и образуют прямоугольную сетку: на каждой из \(n\) полок расположено по \(k\) товаров. Мы будем обозначать цену \(j\)-го товара (считая слева направо) на \(i\)-й полке за \(a_{i,j}\), \(1 \le i \le n, 1 \le j \le k\).

Время от времени роботы задумываются над следующим вопросом: какое среднее арифметическое цен товаров \(a_{i,l}, a_{i,l+1}, \ldots, a_{i,r}\) для некоторой полки \(i\) и индексов \(l \le r\)? К сожалению, старые роботы умеют работать только с целыми числами, и если средняя цена оказывается нецелым числом, они ломаются.

Вы заботитесь о благосостоянии роботов и потому хотите упорядочить товары так, чтобы роботы не могли сломаться. Формально, вы хотите найти такой двумерный массив \(a\), что:

  • Каждое число от \(1\) до \(n \cdot k\) (включительно) встречается в массиве ровно один раз.
  • Для всех \(i, l, r\) средняя цена товаров с \(l\)-го по \(r\)-й на \(i\)-й полке — целое число.

Выясните, возможно ли такое расположение товаров, и если да, приведите любой подходящий пример.

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

В первой строке дано одно число \(t\) (\(1 \le t \le 500\)) — количество наборов входных данных.

Первая и единственная строка каждого набора содержит два числа \(n\) и \(k\) (\(1 \le n, k \le 500\)) — количество полок и длина каждой из них соответственно.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(500\), и сумма \(k\) по всем наборам не превосходит \(500\).

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

Выведите ответ для каждого набора входных данных:

Если подходящая расстановка существуют, выведите «YES» в отдельной строке. Далее в \(n\) строках выведите по \(k\) чисел — цены товаров на каждой из полок. Каждое число от \(1\) до \(n \cdot k\) должно встречаться ровно один раз.

Если ответа не существует, то выведите единственное слово «NO» в отдельной строке.


Примеры
Входные данныеВыходные данные
1 4
1 1
2 2
3 3
3 1
YES
1 
YES
1 3 
2 4 
NO
YES
1 
2 
3

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

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