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

Задача . A. Очарованные игрой


Алиса и Борис играют в теннис.

Теннисный матч состоит из геймов. В каждом гейме один из игроков подаёт, другой — принимает.

Игроки подают по очереди: за геймом, в котором подаёт Алиса, всегда следует гейм, в котором подаёт Борис, и наоборот.

Каждый гейм заканчивается победой одного из игроков. Если гейм выигрывает подающий игрок, говорят, что этот игрок взял подачу. Если принимающий — говорят, что этот игрок сделал брейк.

Известно, что за матч Алиса выиграла \(a\) геймов, а Борис выиграл \(b\) геймов. Неизвестно, кто первый подавал и кто какие геймы выиграл.

Найдите все такие значения \(k\), что за матч Алисы и Бориса могло быть сделано в сумме ровно \(k\) брейков.

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

Во входных данных находятся несколько наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10^3\)) — количество наборов входных данных. Далее следуют наборы входных данных.

Каждая из следующих \(t\) строк описывает один набор входных данных и содержит два целых числа \(a\) и \(b\) (\(0 \le a, b \le 10^5\); \(a + b > 0\)) — число геймов, выигранных Алисой и Борисом, соответственно.

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

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

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

В первой строке выведите целое число \(m\) (\(1 \le m \le a + b + 1\)) — число различных значений \(k\) таких, что за матч могло быть сделано ровно \(k\) брейков.

Во второй строке выведите \(m\) различных целых чисел \(k_1, k_2, \ldots, k_m\) (\(0 \le k_1 < k_2 < \ldots < k_m \le a + b\)) — искомые значения \(k\) в возрастающем порядке.

Примечание

В первом наборе входных данных за матч могло быть сделано любое число брейков от \(0\) до \(3\):

  • Алиса берёт подачу, Борис берёт подачу, Алиса берёт подачу: \(0\) брейков;
  • Борис берёт подачу, Алиса берёт подачу, Алиса делает брейк: \(1\) брейк;
  • Борис делает брейк, Алиса делает брейк, Алиса берёт подачу: \(2\) брейка;
  • Алиса делает брейк, Борис делает брейк, Алиса делает брейк: \(3\) брейка.

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

В третьем наборе входных данных могло быть сделано либо \(2\), либо \(3\) брейка:

  • Борис берёт подачу, Борис делает брейк, Борис берёт подачу, Борис делает брейк, Борис берёт подачу: \(2\) брейка;
  • Борис делает брейк, Борис берёт подачу, Борис делает брейк, Борис берёт подачу, Борис делает брейк: \(3\) брейка.

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

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

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