EduBrick

J. Наименьшее кратное

3000 мс · 256 МБ · всё или ничего

Дано число XX и набор цифр DD. Допишите к XX справа наименьшее количество цифр из DD так, чтобы получившееся число делилось на kk. Среди таких чисел выведите наименьшее.

Само число может быть чудовищно длинным, и перебирать его нельзя. Зато состояние — это остаток по модулю kk, а их всего kk. Приписывание цифры dd переводит остаток rr в (10r+d) mod k(10r + d) \bmod k; получается граф на kk вершинах, и нужен кратчайший путь из остатка XX в ноль.

Чтобы среди кратчайших получилось наименьшее число, цифры на каждом шаге перебираются по возрастанию.

Формат ввода

Первая строка содержит число XX (до 1000 цифр, без ведущих нулей) и число kk (2≤k≤1052 \le k \le 10^5).

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

Формат вывода

Наименьшее подходящее число или −1-1, если его не существует.

Примеры

ввод
102 101
3
1 0 3
вывод
10201
ввод
2 4
1
3
вывод
-1
Войдите, чтобы отправлять решения.