#L6367. 初始化

初始化

题目描述

对一个长度为 nn 的数组进行 nn 次操作,每次将 11pip_i 赋值。

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

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

形式化地,第 ii (2in)(2\le i\le n) 次操作无效,当且仅当

pi>maxj=1i1min(pj,pj+1).p_i > \max_{j=1}^{i-1} \min(p_j, p_{j+1}).

现给定 n,mn,mp1,p2,,pmp_1,p_2,\ldots,p_m

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

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

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


输入格式

第一行两个整数 n,mn,m
第二行 mm 个整数,第 ii 个数为 pip_i


输出格式

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


样例

输入

3 0

输出

4

数据范围与提示

n1018n \le 10^{18}, m1000000m \le 1000000, nmn \ge m
pip_i 互不重复且小于等于 nn