D. World of Tank
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Витя очень любит программировать и решать задачи, но иногда, чтобы отвлечься, он играет в компьютерные игры. Однажды он нашёл новую интересную игру про танки, и так увлёкся ей, что прошёл почти все уровни за один день. Оставался только последний уровень, который никак не получалось пройти. Тогда Витя вспомнил, что он программист, и написал программу, которая помогла ему пройти этот нелегкий уровень. Попробуйте и вы сделать то же.

Игра устроена следующим образом. Есть длинная дорога шириной в две клетки и длиной в n клеток. В некоторых клетках расположены препятствия. Вы управляете танком, который занимает одну клетку. Изначально танк расположен до начала дороги, в клетке с координатами (0, 1). Ваша задача — провести танк до конца дороги, чтобы он попал в клетку (n + 1, 1) или (n + 1, 2).

Каждую секунду танк смещается на одну клетку вправо: координата x увеличивается на один. При нажатии на стрелки вниз или вверх, танк мгновенно меняет полосу движения, то есть координату y. При нажатии на пробел танк стреляет, при этом ближайшее препятствие вдоль полосы, в которой едет танк, мгновенно разрушается. Для того, чтобы зарядить пушку, танку требуется t секунд. Изначально пушка не заряжена, то есть первый выстрел можно сделать только через t секунд после начала движения танка.

Если танк в какой-то момент оказывается в одной клетке с еще не разрушенным препятствием, он сгорает. Если нажать стрелку ровно в тот момент, когда танк двигается вперед, то танк сначала продвинется вперед, а потом сменит полосу, поэтому проскочить по диагонали не получится.

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

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

В первой строке содержатся четыре целых числа n, m1, m2 и t — длина поля, количество препятствий в первой полосе, количество препятствий во второй полосе и количество секунд до перезарядки пушки, соответственно (1 ≤ n ≤ 109; 0 ≤ m1, m2 ≤ n; 0 ≤ m1 + m2 ≤ 106; 1 ≤ t ≤ n).

В следующих двух строках содержится описание препятствий. В первой из этих строк содержатся m1 чисел xi — координаты препятствий в первой полосе (1 ≤ xi ≤ n; xi < xi + 1). Соответственно, координата y у всех будет равна 1.

Вторая строка содержит m2 чисел, описывающие препятствия второй полосы в том же формате. Координата y всех этих препятствий будет равна 2.

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

В первой строке выведите «Yes», если танк может пройти уровень, или «No», в противном случае.

Если танк может пройти, то во второй строке необходимо вывести сколько раз танк переходил с одной полосы на другую, а в следующей строке — координаты переходов, по одному числу на переход: координату x (0 ≤ x ≤ n + 1). Все координаты переходов должны быть различны и выведены в строго возрастающем порядке. Число переходов не должно превышать 2·106. Если танк может пройти поле, то он может это сделать используя не более 2·106 переходов.

В четвертой строке необходимо вывести количество выстрелов, которые танк произвел во время движения, в следующих строках необходимо вывести по два числа — x и y координаты точки (1 ≤ x ≤ n, 1 ≤ y ≤ 2), в которой танк произвел выстрел. Количество выстрелов не должно превышать m1 + m2. Выстрелы требуется выводить в том порядке, в котором они производятся.

Если решений несколько, то выведите любое.

Примеры
Входные данные
6 2 3 2
2 6
3 5 6
Выходные данные
Yes
2
0 3
2
2 2
4 1
Входные данные
1 1 1 1
1
1
Выходные данные
No
Входные данные
9 5 2 5
1 2 7 8 9
4 6
Выходные данные
Yes
4
0 3 5 10
1
5 2
Примечание

Иллюстрация к первому примеру: