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

Задача . E. Компонента связности шахматной доски


Вам задано два целых числа \(b\) and \(w\). У вас есть шахматная доска размера \(10^9 \times 10^9\) с левой верхней клеткой, находящейся в \((1; 1)\), клетка \((1; 1)\) покрашена в белый цвет.

Ваша задача — найти компоненту связности этой шахматной доски, которая содержит ровно \(b\) черных клеток и ровно \(w\) белых клеток. Две клетки называются связными, если у них есть общая сторона (то есть для клетки \((x, y)\) существует не более четырех связных клеток: \((x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)\)). Набор клеток называется компонентой связности, если для каждой пары клеток \(C_1\) и \(C_2\) из этого множества найдется последовательность клеток \(c_1\), \(c_2\), ..., \(c_k\) такая, что \(c_1 = C_1\), \(c_k = C_2\), все \(c_i\) от \(1\) до \(k\) принадлежат этому множеству клеток, а также для всех \(i \in [1, k - 1]\), клетки \(c_i\) и \(c_{i + 1}\) связны.

Очевидно, бывают случаи, когда невозможно найти такую компоненту. В этом случае выведите «NO». Иначе выведите «YES» и любую подходящую компоненту связности.

Вам необходимо ответить на \(q\) независимых запросов.

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

Первая строка входных данных содержит одно целое число \(q\) (\(1 \le q \le 10^5\)) — количество запросов. Затем следуют \(q\) запросов.

Единственная строка запроса содержит два целых числа \(b\) и \(w\) (\(1 \le b, w \le 10^5\)) — необходимое количество черных клеток и необходимое количество белых клеток.

Гарантируется, что сумма количеств клеток не превосходит \(2 \cdot 10^5\) (\(\sum w + \sum b \le 2 \cdot 10^5\)).

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

Для каждого запроса вам необходимо вывести ответ на него.

Если невозможно найти подходящую компоненту, выведите «NO» в первой строке.

Иначе выведите «YES» в первой строке. В следующих \(b + w\) строках выведите координаты клеток вашей компоненты в любом порядке. В вашем ответе должно быть ровно \(b\) черных клеток и ровно \(w\) белых клеток. Выведенная компонента обязана быть связной.

Если существует несколько возможных ответов, вы можете вывести любой. Все координаты в ответе должны принадлежать отрезку \([1; 10^9]\).


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

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

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