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