E. Ваня и шарики
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Ваня играет в игру, в которой на поле размером n × n в каждой клетке находится шарик со значением 0, 1, 2 или 3. Требуется за один ход уничтожить крест из шариков, такой что произведение значений составляющих его шариков максимально. Кресты из шариков могут быть обычные и повёрнутые. Например:


**o**
**o**
ooooo
**o**
**o**

или


o***o
*o*o*
**o**
*o*o*
o***o

Формально, крест задаётся тремя целыми числами r, c и d, такими что d ≤ r, c ≤ n - d + 1. При этом обычный крест состоит из шариков с координатами (x, y) (здесь x означает номер строки, а y — столбца), такими что выполнено |x - r|·|y - c| = 0 и |x - r| + |y - c| < d. Повёрнутый крест состоит из шариков с координатами (x, y), такими что |x - r| = |y - c| и |x - r| < d.

Ваня хочет узнать максимально возможное произведение значений шариков, образующих один крест. Поскольку ответ может быть слишком большим, Ваня хочет знать это число по модулю 109 + 7.

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

В первой строке входных данных находится число n (1 ≤ n ≤ 1000) — размерность таблицы с шариками.

В каждой из следующих n строк записано n символов «0», «1», «2» или «3», описывающих значения, записанные в шариках.

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

Выведите самое большое возможное произведение по модулю 109 + 7. Обратите внимание, что требуется не максимизировать остаток от деления, а найти максимальное число и вывести его по модулю 109 + 7.

Примеры
Входные данные
4
1233
0213
2020
0303
Выходные данные
108
Входные данные
5
00300
00300
33333
00300
00300
Выходные данные
19683
Входные данные
5
00003
02030
00300
03020
30000
Выходные данные
108
Входные данные
5
21312
10003
10002
10003
23231
Выходные данные
3
Входные данные
5
12131
12111
12112
21311
21212
Выходные данные
24
Примечание

В первом примере максимальное произведение достигается на повёрнутом кресте с центром в точке (3, 3) и радиусом 1: 2·2·3·3·3 = 108.