编程题:暴力枚举
俄罗斯方块是一种流行的电脑游戏,在一个由$$C$$列和无限行组成的区域中玩。在一个动作中,以下七件物品中的一件被扔进了场地:

当放下棋子时,玩家可以自由地将棋子旋转90度、180度或270度,并向左或向右移动,只要棋子完全留在场地上。然后,碎片下落,直到落在场地底部或已经占据的方块上。在我们的俄罗斯方块变体中,棋子必须落下,以便棋子的所有部分都位于场的底部或已经占据的方块上。换言之,在碎片落下后,可能没有一个自由的正方形,以至于上面的某个正方形被占据。
例如,将字段设为六列宽,初始高度(每列中已占用的方块数)为2、1、1、0和1。然后,可以用五种不同的方式将5号工件放入字段:给出所有列的初始高度和要放入字段的图形。

编写一个程序,计算实现这一点的不同方法的数量,即通过放下工件可以实现的不同现场配置的数量。
### 输入格式:
第一行包含两个整数$$C$$和$$P(1≤C≤100, 1≤P≤ 7$$),表示列数和放入的方块类型。
第二行包含由单个空格分隔的$$C$$整数,每个整数都在0和100之间,包括0和100。这些是柱的初始高度。
### 输出格式:
在单行上输出将方块放入的不同方式的数量(不出现无法消除的行)。
### 输入样例1:
in
6 5
2 1 1 1 0 1
### 输出样例1:
out
5
### 输入样例2:
in
5 1
0 0 0 0 0
### 输出样例2:
out
7
### 输入样例3:
in
9 4
4 3 5 4 6 5 7 6 6
### 输出样例3:
out
1
答案:若无答案欢迎评论

当放下棋子时,玩家可以自由地将棋子旋转90度、180度或270度,并向左或向右移动,只要棋子完全留在场地上。然后,碎片下落,直到落在场地底部或已经占据的方块上。在我们的俄罗斯方块变体中,棋子必须落下,以便棋子的所有部分都位于场的底部或已经占据的方块上。换言之,在碎片落下后,可能没有一个自由的正方形,以至于上面的某个正方形被占据。
例如,将字段设为六列宽,初始高度(每列中已占用的方块数)为2、1、1、0和1。然后,可以用五种不同的方式将5号工件放入字段:给出所有列的初始高度和要放入字段的图形。

编写一个程序,计算实现这一点的不同方法的数量,即通过放下工件可以实现的不同现场配置的数量。
### 输入格式:
第一行包含两个整数$$C$$和$$P(1≤C≤100, 1≤P≤ 7$$),表示列数和放入的方块类型。
第二行包含由单个空格分隔的$$C$$整数,每个整数都在0和100之间,包括0和100。这些是柱的初始高度。
### 输出格式:
在单行上输出将方块放入的不同方式的数量(不出现无法消除的行)。
### 输入样例1:
in
6 5
2 1 1 1 0 1
### 输出样例1:
out
5
### 输入样例2:
in
5 1
0 0 0 0 0
### 输出样例2:
out
7
### 输入样例3:
in
9 4
4 3 5 4 6 5 7 6 6
### 输出样例3:
out
1
答案:若无答案欢迎评论