Коли немає чим зайнятись, а вдома лише перестановка#10773

Коли немає чим зайнятись, а вдома лише перестановка

2 seconds
256 megabytes
Very hard

Дана перестановка (p_1, p_2, \ldots, p_n) чисел від до .

З нею ви можете робити наступну операцію: переставити місцями два сусідні елементи . Ця операція займає рівно одну секунду.

За одну ітерацію ви робите наступне:

Розглянемо перестановку (q_1, q_2, \ldots, q_n), що знаходиться прямо перед (p_1, p_2, \ldots, p_n) в лексикографічному порядку, тобто лексикографічно менша за і не існує жодної перестановки "між ними". Наприклад, для p = (2, 3, 1): q = (2, 1, 3), для p = (3, 1, 2, 4): q = (2, 4, 3, 1), а для p = (1, 4, 2, 3): q = (1, 3, 4, 2).

Перетворимо перестановку в перестановку , за мінімально можливу кількість операцій. Наприклад, щоб перетворити (1, 4, 2, 3) в (1, 3, 4, 2), потрібно мінімум операції: (1, 4, 2, 3) \to (1, 4, 3, 2) \to (1, 3, 4, 2).

Ви застосовуєте до отриманої перестановки дану ітерацію, поки вона не стане тотожною перестановкою (тобто рівною (1, 2, 3, \ldots, n)). Скільки часу це займе? Оскільки це число може бути дуже великим, виведіть його за модулем 10^9+7.

Перестановка вважається лексикографічно меншою за перестановку , якщо існує такий індекс , що p_j = q_j для всіх j<i, а також p_i<q_i.

Input

Перший рядок містить єдине число (1 \le n \le 2\cdot 10^5) — довжину перестановки.

Другий рядок містить цілих чисел p_1, p_2, \ldots, p_n (1 \le p_i \le n, всі числа попарно різні) — елементи перестановки.

Output

Виведіть кількість секунд, яка пройде, поки процес не завершиться, за модулем 10^9+7.

Examples

Example 1

Loading
Loading

Example 2

Loading
Loading

Note

В першому прикладі маємо:

(1, 4, 2, 3) \to (1, 4, 3, 2) \to (1, 3, 4, 2): секунди.

(1, 3, 4, 2) \to (1, 3, 2, 4): секунда.

(1, 3, 2, 4) \to (1, 2, 3, 4) \to (1, 2, 4, 3): секунди.

(1, 2, 4, 3) \to (1, 2, 3, 4): секунда.

Всього секунд.