Сейчас Иван собирается пойти спать и хочет поставить будильник. Завтра произойдет много важных событий, $$$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
Название |
---|