送分大水题(高维前缀和)(高维差分)
送分大水题
题目大意
给你 n 个 m 维向量。
然后每次询问给出一个 m 维向量,问你有多少对向量满足条件。
条件有四种:每一维最大值都大于等于或小于等于一个值,每一维最小值都小于等于或大于等于一个值。
思路
首先看到这种鬼题我们发现其实可以用高维的一些数据结构啊,什么的。
但由于有 \(10\) 维,这个码量就变得十分的恐怖。
(当然可能有什么简单的写法,但是我不会)
第一第二个询问其实就分别跑一个高维前缀和高维后缀就可以了。
就是处理出有多少个数满足大于某个向量或小于。
那第一第二你其实把大于的两两组合,小于的两两组合,就分别是两问的答案了。
接着我们来看第三第四个询问。
我们考虑延续求第一第二问的思路。
发现这个 \(\max\) 和这个 \(\min\) 不太好搞,那我们考虑从第一问推到第三问,从第二问推到第四问。
首先我们求出的是 \(\max(Ai,Bi)<=Ci\) 的,那我们考虑要怎么得到 \(\max(Ai,Bi)>=Ci\) 的。
(由于它是要每一项都满足,所以你不能是一个满足比它大,另一个随便选,它的 \(\max\) 可能是由两个数分别贡献才比 \(Ci\) 大或等于的)
(我比赛的时候就是因为这样就锅了)
那我们可以考虑先求出 \(\max(Ai,Bi)=Ci\),通过跑后缀和得到 \(\max(Ai,Bi)>=Ci\)。
那怎么得到呢?不难想到用差分,那就是高维差分。
然后第二个求第四个也是同样道理。
然后讲一讲高维的前缀和差分要怎么搞。
具体可以看看代码,你其实就可以想一维的,再想二维的,然后你就可以推广出来了。
然后记得差分不要用容斥的那个,你十维搞容斥会烦死,你就用类似求前缀和的方式减。
然后你注意一下差分枚举的顺序就可以了。
具体差分的实现可以看看我的代码。
然后自己看看数据就知道要快读快输。
(我这种**就不知道)
然后,由于我没有将求前缀啊,求后缀啊这些打包,所以。。。
你懂的,八百多行的代码。
所以——
$$全!!!$$
$$体!!!$$
$$起!!!$$
$$立!!!$$
代码
#pragma GCC optimize(2)
#include<cstdio>
#define ll long long
using namespace std;
int n, m, a[11], q, op, re, now;
int num[4][4][4][4][4][4][4][4][4][4];
int val[4][4][4][4][4][4][4][4][4][4];
ll ans1[4][4][4][4][4][4][4][4][4][4];
ll ans2[4][4][4][4][4][4][4][4][4][4];
ll ans3[4][4][4][4][4][4][4][4][4][4];
ll ans4[4][4][4][4][4][4][4][4][4][4];
ll ans;
char c;
char buf[1<<23], *p1=buf, *p2=buf, obuf[1<<23], *O=obuf;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1<<21, stdin), p1 == p2) ? EOF : *p1++)
int read() {
re = 0; c = getchar();
while (c < '0' || c > '9') c = getchar();
while (c >= '0' && c <= '9') {
re = (re << 3) + (re << 1) + c - '0';
c = getchar();
}
return re;
}
int read1() {
c = getchar();
while (c < '0' || c > '9') c = getchar();
return c - '0';
}
ll write(ll x) {
if (x > 9ll) write(x / 10ll);
putchar(x % 10 + '0');
}
int main() {
freopen("water.in", "r", stdin);
freopen("water.out", "w", stdout);
n = read(); m = read();
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; j++) {
a[j] = read1() - 1;
}
num[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]]++;
val[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]]++;
}
//算出第一个第二个答案(直接前缀后缀)
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 1; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10 + 1];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 1; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9 + 1][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 1; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8 + 1][3 - a9][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 1; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7 + 1][3 - a8][3 - a9][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 1; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6 + 1][3 - a7][3 - a8][3 - a9][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 1; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5 + 1][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 1; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3][3 - a4 + 1][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 1; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2][3 - a3 + 1][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
}
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 1; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1][3 - a2 + 1][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
}
for (int a1 = 1; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += num[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
val[3 - a1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10] += val[3 - a1 + 1][3 - a2][3 - a3][3 - a4][3 - a5][3 - a6][3 - a7][3 - a8][3 - a9][3 - a10];
}
//这一部分杠掉的是求后缀,但是我当时卡时间把就把它放到前面求前缀一起了
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3 - 1; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3 - 1; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3 - 1; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3 - 1; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3 - 1; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3 - 1; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3 - 1; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3 - 1; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
//
// for (int a1 = 3; a1 >= 0; --a1)
// for (int a2 = 3 - 1; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
//
// for (int a1 = 3 - 1; a1 >= 0; --a1)
// for (int a2 = 3; a2 >= 0; --a2)
// for (int a3 = 3; a3 >= 0; --a3)
// for (int a4 = 3; a4 >= 0; --a4)
// for (int a5 = 3; a5 >= 0; --a5)
// for (int a6 = 3; a6 >= 0; --a6)
// for (int a7 = 3; a7 >= 0; --a7)
// for (int a8 = 3; a8 >= 0; --a8)
// for (int a9 = 3; a9 >= 0; --a9)
// for (int a10 = 3; a10 >= 0; --a10)
// val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += val[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
//先记录答案,准备搞第三第四个答案
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10) {
now = num[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
ans1[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = 1ll * now * (now - 1) >> 1;
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = ans1[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
now = val[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
ans2[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = 1ll * now * (now - 1) >> 1;
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] = ans2[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
}
//搞第三个答案:搞出第一个答案的差分数组 得到 max(Ai,Bi)=Ci 的个数
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 1; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 1; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 1; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 1; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 1; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 1; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 1; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 1; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 1; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 1; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans3[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
//跑后缀得到第三个的答案 max(Ai,Bi)>=Ci 的个数
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3 - 1; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3 - 1; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3 - 1; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3 - 1; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3 - 1; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3 - 1; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3 - 1; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3 - 1; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 3; a1 >= 0; --a1)
for (int a2 = 3 - 1; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 3 - 1; a1 >= 0; --a1)
for (int a2 = 3; a2 >= 0; --a2)
for (int a3 = 3; a3 >= 0; --a3)
for (int a4 = 3; a4 >= 0; --a4)
for (int a5 = 3; a5 >= 0; --a5)
for (int a6 = 3; a6 >= 0; --a6)
for (int a7 = 3; a7 >= 0; --a7)
for (int a8 = 3; a8 >= 0; --a8)
for (int a9 = 3; a9 >= 0; --a9)
for (int a10 = 3; a10 >= 0; --a10)
ans3[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans3[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
//求第四个跟求第三个同一个道理
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4 - 1; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 + 1];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4 - 1; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9 + 1][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4 - 1; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7][a8 + 1][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4 - 1; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6][a7 + 1][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4 - 1; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5][a6 + 1][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4 - 1; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4][a5 + 1][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4 - 1; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3][a4 + 1][a5][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4 - 1; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2][a3 + 1][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4 - 1; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1][a2 + 1][a3][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4 - 1; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] -= ans4[a1 + 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 1; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10 - 1];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 1; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9 - 1][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 1; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7][a8 - 1][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 1; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6][a7 - 1][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 1; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5][a6 - 1][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 1; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4][a5 - 1][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 1; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3][a4 - 1][a5][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 1; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2][a3 - 1][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 0; a1 < 4; ++a1)
for (int a2 = 1; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1][a2 - 1][a3][a4][a5][a6][a7][a8][a9][a10];
for (int a1 = 1; a1 < 4; ++a1)
for (int a2 = 0; a2 < 4; ++a2)
for (int a3 = 0; a3 < 4; ++a3)
for (int a4 = 0; a4 < 4; ++a4)
for (int a5 = 0; a5 < 4; ++a5)
for (int a6 = 0; a6 < 4; ++a6)
for (int a7 = 0; a7 < 4; ++a7)
for (int a8 = 0; a8 < 4; ++a8)
for (int a9 = 0; a9 < 4; ++a9)
for (int a10 = 0; a10 < 4; ++a10)
ans4[a1][a2][a3][a4][a5][a6][a7][a8][a9][a10] += ans4[a1 - 1][a2][a3][a4][a5][a6][a7][a8][a9][a10];
q = read();
while (q--) {
op = read();
for (int i = 1; i <= m; ++i) {
a[i] = read1();
a[i]--;
}
if (op == 1) {
ans = ans1[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
write(ans);
putchar('\n');
continue;
}
if (op == 2) {
ans = ans2[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
write(ans);
putchar('\n');
continue;
}
if (op == 3) {
ans = ans3[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
write(ans);
putchar('\n');
continue;
}
if (op == 4) {
ans = ans4[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]][a[7]][a[8]][a[9]][a[10]];
write(ans);
putchar('\n');
continue;
}
}
return 0;
}