Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:256 MB

#4359. 初始化

统计

题目描述

对一个长度为 $n$ 的数组进行 $n$ 次操作,每次将 $1$ 到 $p_i$ 赋值。

由于蒟蒻非常鶸,所以在第 $2$ 到 $n$ 次操作之前,他只会将 $1$ 到 $\min(p_{i-1},p_i)$ 初始化。

如果不是第一次的某个操作将一个未初始化的变量赋值,则该操作为无效操作。第一次操作不需要初始化。

形式化地,第 $i(2\le i\le n)$ 次操作无效,当且仅当 $pi>\mathop{\max}\limits{j=1}^{i-1}\min(pj,p{j+1})$。

现给定 $n,m$ 和 $p_1,p_2,\ldots,p_m$。

求对于所有满足条件的排列 $p$(共有 $(n-m)!$ 种)中,蒟蒻没有无效操作的种数。

若没有满足条件的方案则输出 -1注意,是 $-1$,不是 $0$!

否则,你只要回答答案 $\bmod 10^9+7$ 的结果即可。

输入格式

第一行两个整数 $n,m$;
第二行 $m$ 个整数 第 $i$ 个数为 $p_i$。

输出格式

一个正整数或 -1,表示满足题意的方案数 $\bmod 10^9+7$ 的结果或无解。

样例

input

3 0

output

4

数据范围与提示

$n\le 10^{18},m\le 1000000,n\ge m$
$p_i$ 互不重复且小于等于 $n$