C. Будильники повсюду
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Сейчас Иван собирается пойти спать и хочет поставить будильник. Завтра произойдет много важных событий, $$$i$$$-е из них начнется в $$$x_i$$$-ю минуту. Иван не хочет пропускать ни одного из них, поэтому он хочет поставить будильник таким образом, чтобы он звонил в течение минут $$$x_1, x_2, \dots, x_n$$$, чтобы он смог проснуться в течение каждой из этих минут (заметьте, что не важно, что будильник может звонить в течение любой другой минуты).

Иван может выбрать два свойства будильника — первую минуту, когда он зазвонит (обозначим ее как $$$y$$$) и интервал между двумя последовательными звонками (обозначим его за $$$p$$$). После того, как Иван поставит будильник, он будет звонить в течение минут $$$y, y + p, y + 2p, y + 3p$$$ и так далее.

Иван может выбрать любую минуту как первую, но он не может выбирать произвольное значение $$$p$$$. Он может выбрать его только среди значений $$$p_1, p_2, \dots, p_m$$$ (его телефон не поддерживает других вариантов этого свойства).

Таким образом, Иван хочет выбрать первую минуту $$$y$$$, когда будильник начнет звонить и интервал между двумя последовательными звонками $$$p_j$$$ таким образом, чтобы он звонил в течение всех заданных минут $$$x_1, x_2, \dots, x_n$$$ (и не важно, что он может звонить в любые другие минуты).

Ваша задача — сообщить первую минуту $$$y$$$ и индекс $$$j$$$ такие, что если Иван поставит будильник со свойствами $$$y$$$ и $$$p_j$$$, то он будет звонить в течение всех заданных минут $$$x_1, x_2, \dots, x_n$$$ или сказать, что невозможно выбрать такие значения заданных свойств. Если существует несколько ответов, вы можете вывести любой.

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

Первая строка входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n \le 3 \cdot 10^5, 1 \le m \le 3 \cdot 10^5$$$) — количество событий и количество возможных значений интервалов между звонками.

Вторая строка входных данных содержит $$$n$$$ целых чисел $$$x_1, x_2, \dots, x_n$$$ ($$$1 \le x_i \le 10^{18}$$$), где $$$x_i$$$ равно номеру минуты, когда начнется $$$i$$$-е событие. Гарантируется, что все $$$x_i$$$ заданы в возрастающем порядке (то есть выполняется условие $$$x_1 < x_2 < \dots < x_n$$$).

Третья строка входных данных содержит $$$m$$$ целых чисел $$$p_1, p_2, \dots, p_m$$$ ($$$1 \le p_j \le 10^{18}$$$), где $$$p_j$$$ равно $$$j$$$-му значению интервала между двумя последовательными сигналами.

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

Если невозможно выбрать такие значения $$$y$$$ и $$$j$$$, что все ограничения выполняются, выведите «NO» в первой строке.

Иначе выведите «YES» в первой строке. Затем выведите два целых числа $$$y$$$ ($$$1 \le y \le 10^{18}$$$) и $$$j$$$ ($$$1 \le j \le m$$$) во второй строке, где $$$y$$$ — первая минута, когда будильник Ивана должен начать звонить, а $$$j$$$ — индекс значения интервала между двумя последовательными звонками (значения пронумерованы от $$$1$$$ до $$$m$$$ в порядке входных данных) такие, что будильник будет звонить в течение всех заданных минут $$$x_1, x_2, \dots, x_n$$$. Если существует несколько возможных ответов, выведите любой.

Примеры
Входные данные
3 5
3 12 18
2 6 5 3 3
Выходные данные
YES
3 4
Входные данные
4 2
1 5 17 19
4 5
Выходные данные
NO
Входные данные
4 2
1 5 17 19
2 1
Выходные данные
YES
1 1