При подготовке задачи по программированию было разработано $$$N$$$ решений и измерено время работы $$$T_i$$$ каждого из них на самом худшем тесте.
Специальная строка $$$S$$$ длины $$$N$$$ описывает тип каждого решения: символ $$$S_i$$$ определяет тип решения номер $$$i$$$. При этом символ 0 соответствует плохому решению, ? — спорному, а 1 — хорошему.
Тайм-лимит $$$X$$$ считается корректным, если:
Время работы спорных решений не влияет на корректность тайм-лимита.
Даны $$$Q$$$ запросов, каждый из который представляет собой строку $$$S$$$ длиной $$$N$$$, описывающую тип каждого решения. Найдите для каждого запроса минимальный целый положительный тайм-лимит, который считается корректным, или определите, что это невозможно.
В первой строке задано количество решений $$$N$$$ ($$$1 \le N \le 1000$$$).
Во второй строке заданы $$$N$$$ чисел $$$T_i$$$ ($$$1 \le T_i \le 10^6$$$) — время работы каждого из решений.
В третьей строке задано количество запросов $$$Q$$$ ($$$1 \le Q \le 1000$$$).
В следующих $$$Q$$$ строках содержатся запросы. Каждый запрос представляет собой строку $$$S$$$ ($$$|S|=N$$$), которая содержит только символы 0, 1 или ? — описание типа каждого решения.
Все числа во входных данных целые.
Выведите $$$Q$$$ строк с ответами на запросы, согласно условию.
Если корректного тайм-лимита для запроса не существует, выведите для него -1.
5 500 1000 300 700 100 6 ?0?01 ?0101 1?1?1 11111 00000 ?????
200 -1 1000 2000 1 1
| Name |
|---|


