F. Тайм-лимит
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

При подготовке задачи по программированию было разработано $$$N$$$ решений и измерено время работы $$$T_i$$$ каждого из них на самом худшем тесте.

Специальная строка $$$S$$$ длины $$$N$$$ описывает тип каждого решения: символ $$$S_i$$$ определяет тип решения номер $$$i$$$. При этом символ 0 соответствует плохому решению, ? — спорному, а 1 — хорошему.

Тайм-лимит $$$X$$$ считается корректным, если:

  • время работы всех плохих решений превышает тайм-лимит как минимум в два раза ($$$T_i \ge X \times 2$$$, если $$$S_i = 0$$$);
  • время работы всех хороших решений не превышает половину тайм-лимита ($$$T_i \le X / 2$$$, если $$$S_i = 1$$$).

Время работы спорных решений не влияет на корректность тайм-лимита.

Даны $$$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