#include using namespace std; #define LL long long #define MOD 1000000007LL LL F[1005]; LL C[1005][1005]; LL A[1005][1005]; LL f(LL N, LL M, LL K){ if(M == K)return F[N-M]; if(K == 0){ if(A[N][M])return A[N][M]; LL ans = F[N]; for(int i=1;i<=M;i++){ ans -= f(N, M, i); if(ans<0)ans+=MOD; } return A[N][M] = ans; } return (C[M][K] * f(N-K, M-K, 0))%MOD; } int main() { // clock_t start = clock(); ios::sync_with_stdio(false); cin.tie(NULL); F[0] = F[1] = 1LL; for(int i=2;i<1001;++i)F[i] = (F[i-1]*i)%MOD; C[1][0] = C[1][1] = 1LL; for(int i=2;i<1001;++i){ C[i][0] = 1LL; for(int j=1;j<=i;++j){ C[i][j] = (C[i-1][j]+C[i-1][j-1])%MOD; } } int n, kase; cin>>kase; for(int kk=0;kk>N>>M>>K; cout << "Case " << (kk+1) << ": " << f(N, M, K) << endl; } // cout << "Spend Time: " << (double)(clock()-start)/CLOCKS_PER_SEC << endl; }