#SummerP0067. 欢迎来南京晓庄学院参加团体程序设计天梯赛 Rev1.0

欢迎来南京晓庄学院参加团体程序设计天梯赛 Rev1.0

Description

团体程序设计天梯赛即将在南京晓庄学院举行。作为本次比赛的机房座位安排负责人,Albert_Li 遇到了一个棘手的问题。

比赛机房中共有 nnmm 列座位,每个座位恰好安排一名参赛学生。

本次比赛共有 aa 所学校参加,第 ii 所学校有 bib_i 名学生。所有学生均视为不同的个体,例如同一学校的两名学生交换座位后,应当视为一种新的座位安排方案。

为了促进不同学校选手之间的交流,Albert_Li 希望满足下面的要求:

  • 任意两个上下或左右相邻的座位上,都不能坐来自同一所学校的学生。

两个座位只有在它们共享一条边时才认为相邻。对于位于机房边界的座位,越过边界的方向不存在相邻座位,因此无需考虑。

现在请你计算,一共有多少种不同的学生座位安排方案满足上述要求。

Format

Input

第一行给出三个正整数 n,m,a(1n,m,1nm20,1a4)n,m,a(1\le n,m,1\le nm\le 20,1\le a\le 4),分别表示机房的行数、列数和参赛学校数量。

第二行给出 aa 个正整数 b1,b2,,ba(1bi20)b_1,b_2,\ldots,b_a(1\le b_i\le 20),其中 bib_i 表示第 ii 所学校的参赛学生人数。

保证 i=1abi=nm\sum_{i=1}^{a} b_i=nm

Output

输出一个整数,表示满足要求的不同座位安排方案数。

如果不存在合法的安排方案,输出 0

Samples

2 2 2
2 2
8
2 3 3
2 2 2
96