#include<bits/stdc++.h>
#include<unordered_set>
using namespace std;
#define fio ios_base::sync_with_stdio(false)
#define ll long long int
#define s(x) scanf("%lld",&x)
#define s2(x,y) s(x)+s(y)
#define s3(x,y,z) s(x)+s(y)+s(z)
#define p(x) printf("%lld\n",x)
#define p2(x,y) p(x)+p(y)
#define p3(x,y,z) p(x)+p(y)+p(z)
#define all(x) x.begin(),x.end()
#define F(i,a,b) for(ll i = (ll)(a); i <= (ll)(b); i++)
#define RF(i,a,b) for(ll i = (ll)(a); i >= (ll)(b); i--)
#define ff first
#define ss second
#define mp(x,y) make_pair(x,y)
#define pll pair<ll,ll>
#define pb push_back
ll inf = 1e18;
ll mod = 1e9 + 7 ;
ll gcd(ll a , ll b){return b==0?a:gcd(b,a%b);}
//setbase - cout << setbase (16); cout << 100 << endl; Prints 64
//setfill - cout << setfill ('x') << setw (5); cout << 77 << endl; prints xxx77
//setprecision - cout << setprecision (14) << f << endl; Prints x.xxxx
//cout.precision(x) cout<<fixed<<val; // prints x digits after decimal in val
/**************************CODE GOES HERE*********************************************/
ll modExpo(ll b,ll e){
if(e==0)return 1ll;
if(b==1)return 1ll;
ll ans=1ll;
while(e>0){
if(e%2 == 1){
ans=(ans*b)%mod;
}
b=(b*b)%mod;
e=e/2;
}
return ans;
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
ll t=1;
ll tc=1ll;
s(t);
while(t--){
ll N, K, x1, y1, C, D, E1, E2 , F;
s3(N,K,x1);
s3(y1,C,D);
s3(E1,E2,F);
vector<ll>params(N+1);
params[1]=(x1+y1)%F;
F(i,2,N){
ll x=(C*(x1)+D*(y1)+E1)%F;
ll y=(D*(x1)+C*(y1)+E2)%F;
params[i]=(x+y)%F;
x1=x;
y1=y;
}
// for(auto el:params)cout<<el<<" ";
// cout<<endl;
// cout<<modExpo(3,0);
// return 0;
vector<ll>cumSum(1+N,0ll);
ll sum=K%mod;
cumSum[1]=sum;
for(ll i=2;i<=N;i++){
ll temp=modExpo(i,K);
temp=(i*temp)%mod;
temp=(temp*modExpo(i-1ll,mod-2ll))%mod;
ll temp1 = (i*modExpo(i-1ll,mod-2ll))%mod;
temp = (temp - temp1 + mod)%mod;
sum+=temp;
sum%=mod;
cumSum[i]=sum;
}
ll ans=0ll;
for(ll i=1;i<=N;i++){
ll times=N-i+1ll;
ans+=((params[i]%mod) *(times*cumSum[i])%mod)%mod;
ans%=mod;
// for(ll k=1;k<=K;k++){
// for(ll j=1;j<=i;j++){
// ans+=(params[i]*(times*modExpo(j,k))%mod)%mod;
// ans%=mod;
// }
// }
}
// ll ans=0ll;
// for(ll k=1;k<=K;k++){
// for(ll len=1ll;len<=N;len++){
// for(ll i=1ll;i<=N-len+1ll;i++){
// for(ll j=i,bb=1ll;j<i+len;j++,bb++){
// ans=ans+(params[j]*modExpo(bb,k))%mod;
// ans%=mod;
// }
// }
// }
// }
cout<<"Case #"<<tc++<<": "<<ans<<endl;;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8dW5vcmRlcmVkX3NldD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSAgICAgICBmaW8gICAgICAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKQogCiNkZWZpbmUgICAgICAgbGwgICAgICAgICAgbG9uZyBsb25nIGludAoKI2RlZmluZSAgICAgICBzKHgpICAgICAgICBzY2FuZigiJWxsZCIsJngpCiNkZWZpbmUgICAgICAgczIoeCx5KSAgICAgcyh4KStzKHkpCiNkZWZpbmUgICAgICAgczMoeCx5LHopICAgcyh4KStzKHkpK3MoeikKIAojZGVmaW5lICAgICAgIHAoeCkgICAgICAgIHByaW50ZigiJWxsZFxuIix4KQojZGVmaW5lICAgICAgIHAyKHgseSkgICAgIHAoeCkrcCh5KQojZGVmaW5lICAgICAgIHAzKHgseSx6KSAgIHAoeCkrcCh5KStwKHopCiNkZWZpbmUgICAgICAgYWxsKHgpICAgICAgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSAgICAgICBGKGksYSxiKSAgICBmb3IobGwgaSA9IChsbCkoYSk7IGkgPD0gKGxsKShiKTsgaSsrKQojZGVmaW5lICAgICAgIFJGKGksYSxiKSAgIGZvcihsbCBpID0gKGxsKShhKTsgaSA+PSAobGwpKGIpOyBpLS0pCiAKI2RlZmluZSAgICAgICBmZiAgICAgICAgICBmaXJzdAojZGVmaW5lICAgICAgIHNzICAgICAgICAgIHNlY29uZAojZGVmaW5lICAgICAgIG1wKHgseSkgICAgIG1ha2VfcGFpcih4LHkpCiNkZWZpbmUgICAgICAgcGxsICAgICAgICAgcGFpcjxsbCxsbD4KI2RlZmluZSAgICAgICBwYiAgICAgICAgICBwdXNoX2JhY2sKCmxsIGluZiA9IDFlMTg7CmxsIG1vZCA9IDFlOSArIDcgOwpsbCBnY2QobGwgYSAsIGxsIGIpe3JldHVybiBiPT0wP2E6Z2NkKGIsYSViKTt9CgovL3NldGJhc2UgLSBjb3V0IDw8IHNldGJhc2UgKDE2KTsgY291dCA8PCAxMDAgPDwgZW5kbDsgUHJpbnRzIDY0Ci8vc2V0ZmlsbCAtICAgY291dCA8PCBzZXRmaWxsICgneCcpIDw8IHNldHcgKDUpOyBjb3V0IDw8IDc3IDw8IGVuZGw7IHByaW50cyB4eHg3NwovL3NldHByZWNpc2lvbiAtIGNvdXQgPDwgc2V0cHJlY2lzaW9uICgxNCkgPDwgZiA8PCBlbmRsOyBQcmludHMgeC54eHh4Ci8vY291dC5wcmVjaXNpb24oeCkgIGNvdXQ8PGZpeGVkPDx2YWw7ICAvLyBwcmludHMgeCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBpbiB2YWwKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKkNPREUgR09FUyBIRVJFKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKbGwgbW9kRXhwbyhsbCBiLGxsIGUpewoJaWYoZT09MClyZXR1cm4gMWxsOwoJaWYoYj09MSlyZXR1cm4gMWxsOwoJbGwgYW5zPTFsbDsKCXdoaWxlKGU+MCl7CgkJaWYoZSUyID09IDEpewoJCQlhbnM9KGFucypiKSVtb2Q7CgkJfQoJCWI9KGIqYiklbW9kOwoJCWU9ZS8yOwoJfQoJcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKQp7CiAgIC8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAvL2ZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwogIGxsIHQ9MTsKICBsbCB0Yz0xbGw7CiAgcyh0KTsKICB3aGlsZSh0LS0pewogIAlsbCBOLCBLLCB4MSwgeTEsIEMsIEQsIEUxLCBFMiAsIEY7CiAgCXMzKE4sSyx4MSk7CiAgCXMzKHkxLEMsRCk7CiAgCXMzKEUxLEUyLEYpOwoKICAJdmVjdG9yPGxsPnBhcmFtcyhOKzEpOwogIAlwYXJhbXNbMV09KHgxK3kxKSVGOwogIAlGKGksMixOKXsKICAJCWxsIHg9KEMqKHgxKStEKih5MSkrRTEpJUY7CiAgCQlsbCB5PShEKih4MSkrQyooeTEpK0UyKSVGOwogIAkJcGFyYW1zW2ldPSh4K3kpJUY7CiAgCQl4MT14OwogIAkJeTE9eTsKICAJfQogIAkvLyBmb3IoYXV0byBlbDpwYXJhbXMpY291dDw8ZWw8PCIgIjsKICAJLy8gY291dDw8ZW5kbDsKCiAgCS8vIGNvdXQ8PG1vZEV4cG8oMywwKTsKICAJLy8gcmV0dXJuIDA7CgogICAgdmVjdG9yPGxsPmN1bVN1bSgxK04sMGxsKTsKICAgIGxsIHN1bT1LJW1vZDsKICAgIGN1bVN1bVsxXT1zdW07CiAgICBmb3IobGwgaT0yO2k8PU47aSsrKXsKICAgICAgbGwgdGVtcD1tb2RFeHBvKGksSyk7CiAgICAgIHRlbXA9KGkqdGVtcCklbW9kOwogICAgICB0ZW1wPSh0ZW1wKm1vZEV4cG8oaS0xbGwsbW9kLTJsbCkpJW1vZDsKICAgICAgbGwgdGVtcDEgPSAoaSptb2RFeHBvKGktMWxsLG1vZC0ybGwpKSVtb2Q7CiAgICAgIHRlbXAgPSAodGVtcCAtIHRlbXAxICsgbW9kKSVtb2Q7CiAgICAgIHN1bSs9dGVtcDsKICAgICAgc3VtJT1tb2Q7CiAgICAgIGN1bVN1bVtpXT1zdW07CiAgICB9CgogICAgbGwgYW5zPTBsbDsKICAgIGZvcihsbCBpPTE7aTw9TjtpKyspewogICAgICAgIGxsIHRpbWVzPU4taSsxbGw7CiAgICAgICAgYW5zKz0oKHBhcmFtc1tpXSVtb2QpICoodGltZXMqY3VtU3VtW2ldKSVtb2QpJW1vZDsKICAgICAgICBhbnMlPW1vZDsKICAgICAgICAvLyBmb3IobGwgaz0xO2s8PUs7aysrKXsKICAgICAgICAvLyAgIGZvcihsbCBqPTE7ajw9aTtqKyspewogICAgICAgIC8vICAgICBhbnMrPShwYXJhbXNbaV0qKHRpbWVzKm1vZEV4cG8oaixrKSklbW9kKSVtb2Q7CiAgICAgICAgLy8gICAgIGFucyU9bW9kOwogICAgICAgIC8vICAgfQogICAgICAgIC8vIH0gICAgICAKICAgIH0KCiAvLyAgCWxsIGFucz0wbGw7CiAvLyAgCWZvcihsbCBrPTE7azw9SztrKyspewoJLy8gICAJZm9yKGxsIGxlbj0xbGw7bGVuPD1OO2xlbisrKXsKCS8vICAgCQlmb3IobGwgaT0xbGw7aTw9Ti1sZW4rMWxsO2krKyl7CgkvLyAgIAkJCWZvcihsbCBqPWksYmI9MWxsO2o8aStsZW47aisrLGJiKyspewoJLy8gICAJCQkJYW5zPWFucysocGFyYW1zW2pdKm1vZEV4cG8oYmIsaykpJW1vZDsKCS8vICAgCQkJCWFucyU9bW9kOwoJLy8gICAJCQl9CgkvLyAgIAkJfQoJLy8gICAJfQoJLy8gfQogIAljb3V0PDwiQ2FzZSAjIjw8dGMrKzw8IjogIjw8YW5zPDxlbmRsOzsKICB9CiAgcmV0dXJuIDA7CiB9