#include <bits/stdc++.h>
using namespace std;
#define TR(i,v)       for(__typeof((v).begin())i=(v).begin();i!=(v).end();++i)
#define DEBUG(x)      cout<<#x<<" = "<<x<<endl
#define SIZE(p)       (int)(p).size()
#define MP(a,b)       make_pair((a),(b))
#define ALL(p)        (p).begin(),(p).end()
#define rep(i,n)      for(int i=0;i<(int)(n);++i)
#define REP(i,a,n)    for(int i=(a);i<(int)(n); ++i)
#define FOR(i,a,b)    for(int i=(int)(a);i<=(int)(b);++i)
#define FORD(i,b,a)   for(int i=(int)(b);i>=(int)(a);--i)
#define CLR(x,y)      memset((x),(y),sizeof((x)))
typedef long long LL;
typedef pair<int,int> pii;
const int mod=(int)1e9+7;
inline int mul(int x,int y){
  return (LL)x*y%mod;
}
inline int add(int x,int y){
  x+=y;x%=mod;
  return x;
}
inline int sub(int x,int y){
  x=(x-y)%mod;if(x<0)x+=mod;
  return x;
}
inline int pw(int a,int p){
  int r=1;
  for(;p;p>>=1,a=mul(a,a))if(p&1)r=mul(r,a);
  return r;
}
inline int inv(int x){
  return pw(x,mod-2);
}
int main(){  
  int T;scanf("%d",&T);
  FOR(cs,1,T){
    int b,q,a,d,n,m;scanf("%d%d%d%d%d%d",&b,&q,&a,&d,&n,&m);b%=mod,q%=mod,a%=mod,d%=mod;
    int res;    
    if(n==0 && m==0)res=0;
    else if(n==0)res=mul(b,pw(q,m-1));
    else if(m==0)res=add(a,mul(d,n-1));
    else{
      res=0;
      auto A=[=](int m){
        int r=mul(b,pw(q,m-1));
        int t=inv(pw(q-1,m));
        return mul(r,t);
      };
      --n;
      res=mul(A(n+1),sub(pw(q,m),1));      
      int cc,pc=1;
      int ta=a;
      FOR(i,1,n)ta=add(ta,d);
      res=add(res,ta);
      FOR(i,1,n-1)a=add(a,d);      
      FORD(i,n,1){
        int t=sub(a,A(i));
        cc=mul(pc,mul(n-i+m,inv(n-i+1)));
        t=mul(t,cc);
        res=add(res,t);
        a=sub(a,d);
        pc=cc;
      }      
    }
    printf("Case #%d: %d\n",cs,res);
  }
  return 0;
}