J#6269

J

2 секунди
256 мегабайтів
Дуже складна

Мова програмування J, створена на початку 1990-х років Кеннетом Іверсоном та Роджером Хуї, є синтезом APL (також розробленої Іверсоном) та мов функціонального рівня FP і FL, створених Джоном Бекусом.

Вікіпедія. J (мова програмування)

Сімейство мов APL відоме своєю підтримкою розширених операцій над векторами та масивами, і J не є винятком. Наприклад, всі унарні та бінарні числові операції в цих мовах за замовчуванням застосовуються до векторів та масивів різних розмірностей. Операція додавання ('+') може додавати не лише скаляри, як в інших мовах, але й скаляри до векторів (скаляр додається до кожного елемента вектора), або вектори до векторів (вектори додаються поелементно).

Виразна сила J вражає (як і його загадковий синтаксис), але для цієї задачі нам потрібна лише невелика підмножина мови. Ми розглядаємо один вираз, де можемо використовувати одну векторну змінну , одну скалярну змінну - довжину вектора , і наступні операції:

Операції обчислюються справа наліво, природний пріоритет операцій в J ігнорується. Порядок обчислення може бути змінений за допомогою дужок. Більш точно синтаксис визначається в наступному BNF.

<вираз> ::= <терм> | <терм> (' + ' | ' - ' | ' * ') <вираз> | ('-' | '*:' | '+/') <вираз>

<терм> ::= '('<вираз>')' | 'X' | 'N' | <число>

<число> ::= ('0' | '1' | . . . | '9')+

Щоб правильно накласти ще одне обмеження на синтаксис виразу, давайте визначимо складність виразу:

Наприклад, складність виразу "(3-+/*:*:X)-X**:X" дорівнює , тоді як складність його підвиразу "*:*:X" дорівнює .

Ваша програма отримує вираз, що повертає скаляр, і значення вектора , і повинна обчислити результат виразу за модулем 10^9. Складність кожного підвиразу у даному виразі не перевищує .

Вхідні дані

Перша строка містить одне ціле число (1 \le N \le 10^5) - довжина вектора .

Друга строка містить цілих чисел - компоненти вектора (0 \le X_i < 10^9).

Третя строка містить вираз, який потрібно обчислити, непорожній рядок не більше ніж 10^5 символів. Кожне число у виразі менше 10^9. Згортка ніколи не застосовується до скаляра.

Вихідні дані

Виведіть одне ціле число - результат виразу за модулем 10^9.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Приклад 3

Loading
Loading