Кубики#7062

Кубики

1 секунда
32 мегабайти
Легка

Незважаючи на те, що Петрик П'яточкін ходить до школи, він все ще продовжує гратися з кубиками. З однакових кубиків він викладає сходинки вздовж стіни. Для цього складає стовпчики з кубиків таким чином:

Висоти стовпчиків не зростають при розгляданні сходинок зліва направо. Інакше кажучи, якщо h_i — висота -го стовпчика, то h_1 \geq h_2 \geq h_3 \geq \ldots

Петрик встановлює кубики у деякій послідовності. Він встановив для себе такі правила:

  1. кубик, розташований не на підлозі, можна поставити лише після кубика, на якому він має стояти. Інакше кажучи, не можна підсовувати кубики під вже поставлені;

  2. кубик, який знаходиться не у першому стовпчику, можна поставити лише після встановлення кубика, розташованого ліворуч від нього.

Знайти кількість різних способів послідовного встановлення кубиків, у результаті яких виникнуть сходи з заданими висотами стовпчиків h_1, h_2, \ldots, h_k. Враховуються лише ті способи, що задовольняють умови (1) та (2).

Вхідні дані

Перший рядок вхідного файлу містить натуральне число — кількість стовпчиків (1 \leq k \leq 6).

Другий рядок вхідного файлу містить натуральних чисел h_1, h_2, \ldots, h_k — кількості кубиків відповідно у першому, другому, ..., -му стовпчику сходів (6 \geq h_1 \geq h_2 \geq \ldots \geq h_k \geq 1).

Вихідні дані

Єдиний рядок вихідного файлу має містити кількість різних способів розташування кубиків у задану конфігурацію згідно з вказаними правилами (1) і (2) при даних висотах стовпчиків.

Для цього прикладу вкажемо допустимі послідовності розташування кубиків. Номер кожного кубика вказує, яким за рахунком його ставлять.

Приклади

Приклад 1

Loading
Loading