J. Суперперестановки
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Однажды на уроке информатики Дима решил все возможные задачи про перестановки. Тогда он придумал задачу про суперперестановку.

Суперперестановкой порядка $$$n$$$ называется такая последовательность чисел от $$$1$$$ до $$$n$$$, что каждая перестановка чисел от $$$1$$$ до $$$n$$$ входит в неё как подотрезок.

Дима быстро придумал, что получать суперперестановки он будет с помощью следующего алгоритма:

  • $$$s_1 = [1]$$$.
  • Исходно $$$s_{n+1}$$$ приравняем к $$$s_n$$$.
  • Будем рассматривать подотрезки $$$s_n$$$ длины $$$n$$$ слева направо, по увеличению левой границы.
  • Если очередной подотрезок $$$s_n[l, l+1, \ldots, l+n-1]$$$ является перестановкой чисел от $$$1$$$ до $$$n$$$, то есть, на этом отрезке встречаются все числа от $$$1$$$ до $$$n$$$ по одному разу, то вставим в $$$s_{n+1}$$$ числа $$$n + 1, s_n[l], s_n[l + 1], \ldots, s_n[l+n-1]$$$ сразу после последнего элемента $$$s_n[l+n-1]$$$ соответствующего подотрезка.

Посмотрим, как получаются суперперестановки порядка $$$1$$$, $$$2$$$, $$$3$$$ и $$$4$$$:

По определению $$$s_1 = [ 1 ]$$$.

Положим $$$s_2 = [ 1 ]$$$. Рассмотрим единственный отрезок длины $$$1$$$ в $$$s_1$$$: $$$[1]$$$ является перестановкой, вставляем после него $$$[2, 1]$$$ в $$$s_2$$$, получаем $$$s_2 = [1, \mathbf{2, 1}]$$$.

Положим $$$s_3 = [ 1, 2, 1 ]$$$. Рассмотрим отрезки длины $$$2$$$ в $$$s_2$$$. $$$[1, 2]$$$ является перестановкой, вставляем после него $$$[3, 1, 2]$$$, получаем $$$s_3 = [1, 2, \mathbf{3, 1, 2}, 1]$$$. $$$[2, 1]$$$ также является перестановкой, после его последнего элемента в $$$s_3$$$ вставляем $$$[3, 2, 1]$$$, получаем $$$s_3 = [1, 2, 3, 1, 2, 1, \mathbf{3, 2, 1}]$$$.

Положим $$$s_4 = [ 1, 2, 3, 1, 2, 1, 3, 2, 1]$$$. Рассмотрим отрезки длины $$$3$$$ в $$$s_3$$$.

  • $$$[1, 2, 3]$$$ является перестановкой, вставляем после него $$$[4, 1, 2, 3]$$$, получаем $$$s_4 = [ 1, 2, 3, \mathbf{4, 1, 2, 3}, 1, 2, 1, 3, 2, 1]$$$.
  • $$$[2, 3, 1]$$$ является перестановкой, вставляем после него $$$[4, 2, 3, 1]$$$, получаем $$$s_4 = [ 1, 2, 3, 4, 1, 2, 3, 1, \mathbf{4, 2, 3, 1}, 2, 1, 3, 2, 1]$$$.
  • $$$[3, 1, 2]$$$ является перестановкой, вставляем после него $$$[4, 3, 1, 2]$$$, получаем $$$s_4 = [ 1, 2, 3, 4, 1, 2, 3, 1, 4, 2, 3, 1, 2, \mathbf{4, 3, 1, 2}, 1, 3, 2, 1]$$$.
  • $$$[1, 2, 1]$$$ перестановкой не является, поэтому ничего не делаем и переходим к следующему отрезку.
  • $$$[2, 1, 3]$$$ является перестановкой, вставляем после него $$$[4, 2, 1, 3]$$$, получаем $$$s_4 = [ 1, 2, 3, 4, 1, 2, 3, 1, 4, 2, 3, 1, 2, 4, 3, 1, 2, 1, 3, \mathbf{4, 2, 1, 3}, 2, 1]$$$.
  • Аналогично делаем для двух оставшихся перестановок длины 3: $$$[1, 3, 2]$$$ и $$$[3, 2, 1]$$$.

Дима заметил, что это довольно эффективный способ построения суперперестановки, поскольку каждая перестановка встречается ровно один раз. Чтобы убедиться, что Дима не ошибся, он хочет по заданной перестановке $$$a_1, \dots, a_n$$$ найти её вхождение в суперперестановку $$$s_n$$$. Позиции в суперперестановке нумеруются, начиная с единицы.

Так как длина $$$s_n$$$ достаточно большая, то необходимо вывести остаток от деления номера первого элемента последовательности $$$s_n$$$, с которого начинается вхождение в неё заданной перестановки, на число $$$10^9 + 7$$$.

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

В первой строке содержится одно целое число $$$n$$$ — количество элементов в перестановке ($$$1 \le n \le 300\,000$$$).

Следующая строка входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ — элементы перестановки ($$$1 \le a_i \le n$$$, все числа $$$a_i$$$ различны).

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

Выведите единственное число — позицию вхождения перестановки $$$a_1, a_2, \ldots, a_n$$$ в суперперестановку порядка $$$n$$$. Ответ необходимо вывести по модулю $$$10^9+7$$$.

Примеры
Входные данные
3
2 3 1
Выходные данные
2
Входные данные
4
2 3 1 4
Выходные данные
6
Входные данные
4
4 3 1 2
Выходные данные
14