#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;

const int MAXN = 1E4 + 10;
const ll MOD = 1E9 + 7;

ll inv[MAXN], fac[MAXN], facinv[MAXN];

ll expMod(ll e, ll n, ll p = MOD){
    ll ret = 1;
    for (; n; n >>= 1, e = e * e % p)
        if (n & 1)
            ret = ret * e % MOD;
    return ret;
}

ll getInv(ll e, ll p = MOD){
    return expMod(e, p - 2);
}

ll comb(ll b, ll a){
    ll ret = 1;
    for (int i = 0; i < a; ++i)
        ret = ret * (b - i) % MOD;
    return ret * facinv[a] % MOD;
}

void pre(){
    inv[0] = 0, inv[1] = 1;
    fac[0] = fac[1] = 1;
    facinv[0] = facinv[1] = 1;
    for (int i = 2; i < MAXN; ++i){
        inv[i] = inv[MOD % i] * (MOD - MOD / i) % MOD;
        fac[i] = fac[i - 1] * i % MOD;
        facinv[i] = facinv[i - 1] * inv[i] % MOD;
    }
}

int main(){
    pre();
    int T;
    ll b1,a1,n,m,d,q;
    scanf("%d",&T);
    for(int _ = 1; _ <= T; _++){
        scanf("%lld%lld%lld%lld%lld%lld", &b1, &q, &a1, &d, &n, &m);
        ll ans = 0;
        ans = expMod(q, n + m - 1);
        ll now = 1;
        for(int i = 0; i < n - 1; i++){
            now = now * (n + m - 1 - i) % MOD * inv[i + 1] % MOD * (q - 1) % MOD;
            ans -= now;
        }
        ans -= 1;
        ans = (ans % MOD + MOD) % MOD;
        ans = ans * expMod(getInv(q - 1) % MOD, n) % MOD;
        ans = ans * b1 % MOD + a1 * comb(n+m-1, n-1) % MOD + d * comb(n+m-1, n-2) % MOD;
        ans = (ans % MOD + MOD) % MOD;
        printf("Case #%d: %lld\n", _, ans);
    }
    return 0;
}

