На школьном этапе олимпиады по информатике вы решили все задачи, кроме двух самых простых. В первой задаче, вам необходимо было возвести число в некоторую степень, а во второй — представить строку в виде нескольких подряд записанных строк. Поначалу, вы подумали, что программирование это не ваше, но слегка подостыв, пришли к выводу, что нужно больше учиться! Поэтому, вы записались в Клуб Творчества Программистов, и рассказали там, о своей проблеме. В качестве работы над ошибками, преподаватель дал вам задачу, сочетающую в себе и возведение в степень, и разбиение строки на несколько подстрок. Вы конечно же решили её тогда, поэтому вам не составит труда решить её и сейчас. Вот она:
Имеется $$$n$$$ попарно различных натуральных чисел $$$p_1, \, p_2, \, \dots, \, p_n$$$ и $$$n$$$ натуральных чисел $$$c_1, \, c_2, \, \dots, \, c_n$$$.
Рассмотрим строку $$$s$$$ состоящую из цифр. Рассмотрим некоторое её разбиение на $$$k$$$ непустых подстрок: $$$s = t_1 + t_2 + \ldots + t_k$$$. Никакая $$$t_j$$$ не должна содержать ведущих нулей. Красотой подстроки $$$t_j$$$ назовем максимальное натуральное $$$y$$$, такое что $$$t_j = p_i^x$$$ и $$$y = c_i \cdot x$$$, для некоторого ($$$1 \le i \le n$$$). Если нет такого $$$i$$$, что $$$t_j = p_i^x$$$, то $$$y$$$ полагается равным $$$0$$$.
Изящностью разбиения $$$t_1, t_2, \ldots, t_k$$$ назовем минимальную красоту среди всех $$$t_j$$$.
Ваша задача найти максимально достижимую изящность, а так-же число разбиений, при которых она достижима. Дабы навсегда закрепить полученные навыки, преподаватель просил решить задачу для $$$q$$$ строк $$$s$$$.
Первая строка содержит одно целое число — $$$n$$$ ($$$1 \le n \le 10^5$$$).
В следующих $$$n$$$ строках находятся по 2 целых числа — $$$p_i$$$ ($$$2 \le p_i \lt 10^{18}$$$) и $$$c_i$$$ ($$$1 \le c_i \le 10^7$$$). Гарантируется, что все $$$p_i$$$ попарно различны.
$$$n + 2$$$-я строка содержит одно целое число — $$$q$$$ ($$$1 \le q \le 10^5$$$).
В каждой из следующих $$$q$$$ строк записано по одной строке $$$s$$$ ($$$1 \le |s| \le 18$$$). Все строки состоят из цифр от $$$0$$$ до $$$9$$$.
Выведите $$$q$$$ строк. В $$$i$$$-й строке выведите $$$2$$$ целых числа - максимально достижимая изящность $$$i$$$-й строки из ввода и число разбиений, при которых она достигается.
| Группа тестов | Дополнительные ограничения | Баллы | Необходимые группы | |||
| $$$n$$$ | $$$p_i$$$ | $$$q$$$ | $$$s$$$ | |||
| $$$1$$$ | $$$n \le 9$$$ | $$$p_i \le 999$$$ | $$$q \le 10$$$ | $$$|s| \le 3$$$ | $$$5$$$ | — |
| $$$2$$$ | $$$n \le 100$$$ | — | $$$q \le 10$$$ | $$$|s| \le 9$$$ | $$$15$$$ | $$$1$$$ |
| $$$3$$$ | — | — | $$$q \le 200$$$ | — | $$$25$$$ | $$$1$$$ — $$$2$$$ |
| $$$4$$$ | — | — | $$$q \le 10^4$$$ | — | $$$25$$$ | $$$1$$$ — $$$3$$$ |
| $$$5$$$ | — | — | $$$q \le 5 \cdot 10^4$$$ | — | $$$20$$$ | $$$1$$$ — $$$4$$$ |
| $$$6$$$ | — | — | — | — | $$$10$$$ | $$$1$$$ — $$$5$$$ |
Обратите внимание, что для прохождения любой группы тестов ваша программа не обязана выдавать верный ответ на примерах из условия.
66 1123456789012345678 422 23 25 107 25361234567890123456782564911000
2 1 42 1 4 3 0 2 0 1
Строка "36" имеет 2 разбиения: "3" + "6" и "36". Красота строки "3" равна $$$2$$$, красота строки "6" равна $$$1$$$. Значит изящность разбиения "3" + "6" равна $$$min(2, 1) = 1$$$. Красота строки "36" равна $$$2$$$, т.к. $$$36 = 6^2$$$, следовательно изящность разбиения "36" равна 2.
Рассмотрим разбиения с изящностью $$$4$$$ для строки "25649":
1) "25" + "64" + "9".
2) "256" + "4" + "9".
3) "256" + "49".