Розділи цукерки
Limits: 2 sec., 256 MiB
У Марічки є 2 ряди по nn цукерок у кожному. Марічка пронумерувала цукерки у кожному ряді. У першому ряду цукерки пронумеровані від 1 до nn зліва направо. У другому ряду цукерки теж пронумеровані від 1 до nn, номер кожної цукерки унікальний, але порядок може бути довільним. Тобто у другому ряду номери утворюють довільну перестановку, а в першому — тотожну.
Після цього Марічка вирішила з’їсти усі цукерки. Для цього вона обирає найлiвiшу цукерку з першого ряду або найлiвiшу цукерку з другого ряду (на її вибiр) i з’їдає її. Так Марiчка продовжує поки не з’їсть усi цукерки.
Зеник знає послідовність номерів цукерок у тому порядку, в якому їх їла Марічка. Тепер Зенику цікаво, скільки різних послідовностей номерів цукерок у другому ряду могло бути. Оскільки це число може бути великим, знайдіть його остачу від ділення на 109+7109+7.
Input
У першому рядку задано одне ціле число nn — початкова кількість цукерок у кожному ряді.
У другому рядку задано 2n2n цілих чисел aiai — номери цукерок у тому порядку, у якому їх їла Марічка.
Output
Виведіть єдине число — кількість можливих послідовностей номерів у другому ряду по модулю 109+7109+7.
Constraints
1≤n≤2⋅1051≤n≤2⋅105,
1≤ai≤n1≤ai≤n,
Серед усіх aiai кожне значення від 1 до nn зустрічається рівно 2 рази.
Samples
Input (stdin) | Output (stdout) |
---|---|
4 1 1 2 3 2 3 4 4 | 2 |
Input (stdin) | Output (stdout) |
---|---|
2 2 2 1 1 | 0 |