显示原始代码
#include <stdio.h>
#define MOD 1000000007
#define MAX_N 1001
long long fact[MAX_N];
long long C[MAX_N][MAX_N];
long long pow_mod(long long base, long long exp) {
long long result = 1;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % MOD;
}
base = (base * base) % MOD;
exp /= 2;
}
return result;
}
void preprocess() {
fact[0] = 1;
for (int i = 1; i < MAX_N; ++i) {
fact[i] = (fact[i - 1] * i) % MOD;
}
for (int n = 0; n < MAX_N; ++n) {
for (int m = 0; m <= n; ++m) {
if (m == 0 || m == n) {
C[n][m] = 1;
} else {
C[n][m] = (C[n - 1][m - 1] + C[n - 1][m]) % MOD;
}
}
}
}
long long B(int n) {
long long res = 0;
if (n == 0)
return 1;
for (int i = 0; i < n; ++i) {
res = (res + (C[n - 1][i] * B(i)) % MOD) % MOD;
}
return res;
}
int main() {
preprocess();
int T;
scanf("%d", &T);
long long res[T];
for (int i = 0; i < T; ++i) {
int n;
scanf("%d", &n);
res[i] = B(n);
}
for (int i = 0; i < T; ++i) {
printf("%lld\n", res[i]);
}
return 0;
}