M. Матрица
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Нео наконец понял, как устроена Матрица.

Матрица — это квадратная таблица размера n × n, в каждой из ячеек которой находится 0 или 1, при этом должны выполняться следующие ограничения:

  • В каждом столбце имеется хотя бы одна единица; все единицы в столбце идут подряд (то есть между любыми двумя единицами в одном столбце нет нулей).
  • В каждой строке количество единиц не меньше a и не больше b.

Матрица последовательно принимает все свои допустимые значения (то есть значения, при которых ограничения выполняются) в следующем порядке. Определим состояние Матрицы как последовательность из n2 элементов, полученную последовательным выписыванием всех строк Матрицы друг за другом (a1, 1, ..., a1, n, a2, 1, ..., an, n). Все состояния Матрицы, соответствующие допустимым значениям, упорядочиваются лексикографически и в момент времени t Матрица принимает значение, соответствующее t-му в получившемся списке состоянию.

Нео научился восстанавливать Матрицу в любой момент времени. А вы так сможете?

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

В первой строке находятся четыре целых числа n, a, b и q (1 ≤ n ≤ 10, 1 ≤ a ≤ b ≤ n, 1 ≤ q ≤ 1000). В i-ой из последующих q строк находится число ti — интересующий момент времени (1 ≤ ti ≤ 1018).

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

Для i-го запроса из входных данных выведите n строк по n символов в каждой — значение Матрицы в ti-й момент времени. Если допустимых состояний Матрицы меньше, чем ti, то выведите «No such matrix.» без кавычек. Ответы на запросы разделяйте переводом строки. Смотрите пример для более точного понимания.

Пример
Входные данные
3 2 3 5
1
2
16
34
35
Выходные данные
011
011
101
 
011
011
110
 
101
111
101
 
111
111
111
 
No such matrix.