ASCII вираз
Математичні вирази, що зустрічаються в старих статтях і технічних документах, часто надруковані на друкарській машинці в кілька рядків. Для цього використовують шрифт з фіксованою шириною або моноширинний шрифт. Розгляньмо наступний математичний вираз.
Він надрукований у чотирьох рядках: 4 2(1 - —-) * - 5 + 6 2 3, де "- 5" означає унарний мінус перед 5. Такий вираз ми називаємо "ASCII виразом".
Ваше завдання — створити програму, яка розпізнає структуру ASCII виразів, отриманих за допомогою оптичного розпізнавання символів (OCR) зі старих документів, і обчислює їх значення.
Для спрощення припустимо, що ASCII вирази побудовані за певними правилами. Їх синтаксис наведено в Таблиці 1.
Наприклад, від'ємна дробова частина представлена в трьох рядках:
3- — 4
де лівий дефіс означає унарний мінус. Один пробіл потрібен між унарним мінусом і вінкулумом дробу.
Дріб представлений у чотирьох рядках:
3 + 4 * -2————- 2- 1 - 2
де ширини клітинок діленого і дільника становлять 11 і 8 відповідно. Отже, кількість дефісів вінкулуму дорівнює 2 + max(11, 8) = 13. Дільник центрується ⌈(13−8)/2⌉ = 3 пробілами (дефісами) зліва і ⌊(13−8)/2⌋ = 2 справа.
Показниковий вираз (4^2)^3 представлений у двох рядках:
2 3( 4 )
де клітинка для 2 розташована на один рядок вище базової лінії клітинки для 4, а клітинка для 3 розташована на один рядок вище базової лінії клітинки для первинного (4^2).
Вхідні дані
Вхід складається з кількох наборів даних, за якими слідує рядок, що містить нуль. Кожен набір даних має наступний формат.
nstr1str2...strn
n — це додатне ціле число, яке вказує кількість наступних рядків однакової довжини, що представляють клітинку ASCII виразу. str_k — це k-й рядок клітинки, де кожен пробіл замінено на крапку.
Можна припустити, що n ≤ 20 і що довжина рядків не перевищує 80.
Вихідні дані
Для кожного набору даних потрібно вивести один рядок, що містить невід'ємне ціле число менше 2011. Це число вказує значення ASCII виразу в модульній арифметиці за модулем 2011. Вихід не повинен містити жодних інших символів.
Немає дробу з дільником, що дорівнює нулю або кратний 2011.
Зверніть увагу, що показниковий вираз x^0 визначається як 1, а x^y (y — додатне ціле число) визначається як добуток x×x×...×x, де кількість x дорівнює y.
Дріб обчислюється як добуток x і оберненого до y, тобто x× inv(y), за модулем 2011. Обернене до y (1 ≤ y < 2011) однозначно визначається як ціле число z (1 ≤ z < 2011), яке задовольняє z × y ≡ 1 (mod 2011), оскільки 2011 є простим числом.