#include #include #include #include #include #include #include #include #include #include #include #include #include #define clr(str, x) memset(str, x, sizeof(str)) #define FRER() freopen("in.txt", "r", stdin); #define FREW() freopen("out.txt", "w", stdout); #define MAX_INF 0x7fffffff #define INF 0x3f3f3f3f #define maxn typedef long long int ll; using namespace std; const int mod = 1000007; int C[405][405]; int n, m, k, ans = 0; void init() { for (int i = 1; i <= 400; i++) { C[i][0] = C[i][i] = 1; for (int j = 1; j < i; j++) C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod; } } int main() { // FRER() // FREW() init(); int T, kase = 1; int s1, s2, s3, s4, s5; scanf("%d", &T); while (T--) { ans = 0; scanf("%d%d%d", &n, &m, &k); if (k == 0) { printf("Case %d: 0\n", kase++); continue; } s1 = C[n * m][k]; s2 = 2 * (C[n * (m - 1)][k] + C[(n - 1) * m][k]) % mod; s3 = (C[(n - 2) * m][k] + 4 * C[n * m - n - m + 1][k] + C[n * (m - 2)][k]) % mod; s4 = 2 * (C[(n - 2) * (m - 1)][k] + C[(n - 1) * (m - 2)][k]) % mod; s5 = C[(n - 2) * (m - 2)][k] % mod; ans = s1 - s2 + s3 - s4 + s5; ans = (ans + 10 * mod) % mod; // 防止取余后出现负数 printf("Case %d: %d\n", kase++, ans); } return 0; }