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

Задача . D. Слой профессионалов


Задача

Темы: битмаски дп *3100

Кардблаф - популярный вид спорта в Телеграме. Каждый игрок в Кардблаф когда-либо мечтал попасть в слой профессионалов. В слое профессионалов сейчас \(n\) судей и вы проходите туда отбор. У вас есть число \(k\) — ваше умение играть в Кардблаф.

Каждый судья имеет число \(a_i\) — показатель неуверенности относительно того, брать вас или нет, а также опыт \(e_i\). Для того, чтобы убеждать судей, вам нужно играть с ними. С каждым судьёй вы можете сыграть только один раз. По результатам игры вы можете уменьшить неуверенность \(i\)-го судьи, разделив её на любой делитель \(a_i\) небольший \(k\). Если НОД всех показателей судей будет равен \(1\), то они придут к согласию и возьмут вас в слой профессионалов.

Также вы хотели бы минимизировать время, потраченное на убеждение судей. Известно, что если вы сыграете с \(x\) судьями с суммарным опытом \(y\), то потратите \(x \cdot y\) секунд.

Выведите минимальное время для вступление в слой профессионалов, если это возможно, и \(-1\), иначе.

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

В первой строке содержатся два числа \(n\) и \(k\) (\(1 \leq n \leq 10^6\), \(1 \leq k \leq 10^{12}\)) — число судей и ваше умение играть в Кардблаф.

Во второй строке содержатся \(n\) чисел, где \(i\)-е число \(a_i\) (\(1 \leq a_i \leq 10^{12}\)) — неуверенность \(i\)-го судьи.

В третьей строке содержатся \(n\) чисел в аналогичном формате (\(1 \leq e_i \leq 10^9\)), \(e_i\) — опыт \(i\)-го судьи.

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

Выведите одно число - минимальное число секунд, если существует способ убедить судей, и \(-1\), иначе.


Примеры
Входные данныеВыходные данные
1 3 6
30 30 30
100 4 5
18
2 1 1000000
1
100
0
3 3 5
7 7 7
1 1 1
-1

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

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