Codeforces Round 843 (Div. 2) |
---|
Закончено |
На Марсе обитает необычный вид пауков — двоичные пауки.
Прямо сейчас марсианские ученые наблюдают за колонией из $$$n$$$ пауков, $$$i$$$-й из которых имеет $$$a_i$$$ лапок.
Некоторые пауки дружат между собой. А именно, $$$i$$$-й и $$$j$$$-й пауки являются друзьями, если $$$\gcd(a_i, a_j) \ne 1$$$, т. е. существует некоторое число $$$k \ge 2$$$ такое, что $$$a_i$$$ и $$$a_j$$$ одновременно делятся на $$$k$$$ без остатка. Здесь $$$\gcd(x, y)$$$ обозначает наибольший общий делитель (НОД) чисел $$$x$$$ и $$$y$$$.
Ученые обнаружили, что пауки могут передавать сообщения. Если два паука являются друзьями, то тогда они могут передать сообщение напрямую за одну секунду. Иначе паук должен передать сообщение своему другу, тот, в свою очередь, должен передать сообщение своему другу, и так далее, пока сообщение не дойдет до адресата.
Рассмотрим пример.
Пусть паук с восемью лапками хочет передать сообщение пауку с $$$15$$$-ю лапками. Напрямую он этого сделать не может, потому что $$$\gcd(8, 15) = 1$$$. Зато он может передать сообщение через паука с шестью лапками, поскольку $$$\gcd(8, 6) = 2$$$ и $$$\gcd(6, 15) = 3$$$. Таким образом, сообщение дойдет за две секунды.
Прямо сейчас ученые наблюдают, как $$$s$$$-й паук хочет передать сообщение $$$t$$$-му пауку. У исследователей есть гипотеза, что пауки всегда передают сообщения оптимально. По этой причине ученым потребуется программа, которая смогла бы вычислить минимальное время передачи сообщения, а также вывести один из оптимальных маршрутов.
В первой строке входных данных находится целое число $$$n$$$ ($$$2 \le n \le 3\cdot10^5$$$) — количество пауков в колонии.
Во второй строке входных данных находится $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le 3\cdot10^5$$$) — количество лапок у пауков.
В третьей строке входных данных находится два целых числа $$$s$$$ и $$$t$$$ ($$$1 \le s, t \le n$$$) — пауки, между которыми необходимо передать сообщение.
Если передать сообщение между заданной парой пауков невозможно, выведите $$$-1$$$.
Иначе в первой строке выходных данных выведите целое число $$$t$$$ ($$$t \ge 1$$$) — количество пауков, которые участвуют в передаче сообщения (т. е. минимальное время доставки сообщения в секундах плюс один). Во второй строке выведите $$$t$$$ различных целых чисел $$$b_1, b_2, \ldots, b_t$$$ ($$$1 \le b_i \le n$$$) — номера пауков, через которых должно следовать сообщение, в порядке его следования от отправителя к получателю.
Если вариантов построения оптимального маршрута для сообщения несколько, то выведите любой из них.
7 2 14 9 6 8 15 11 5 6
3 5 4 6
7 2 14 9 6 8 15 11 5 7
-1
7 2 14 9 6 8 15 11 5 5
1 5
Первый пример разобран выше. В нем видно, что сообщение от паука номер $$$5$$$ (с восемью лапками) к пауку номер $$$6$$$ (с $$$15$$$-ю лапками) оптимально передать через паука номер $$$4$$$ (с шестью лапками).
Во втором примере паук номер $$$7$$$ (с $$$11$$$ лапками) ни с кем не дружит, поэтому ему невозможно передать сообщение.
Название |
---|