//参看了大神的解题报告,好题,体现了通过分析问题来对问题进行各种剪枝,优化已致程序以最优的算法运行;
//解题思路:贪心的各种优化,先用最小公倍数优化,再用最小的次数来优化,最后时间的复杂度为sqrt(n);
//代码如下:
#include<stdio.h>
__int64 gcd(__int64 a,__int64 b){return b==0?a:gcd(b,a%b);}
int main()
{
int cass,cas,i;
__int64 n,s1,v1,s2,v2,tem;
__int64 gm,n1,n2,mod,ans,cnt,Max;
scanf("%d",&cass);
for(cas=1;cas<=cass;cas++)
{
ans=0;
scanf("%I64d%I64d%I64d%I64d%I64d",&n,&s1,&v1,&s2,&v2);
gm=gcd(s1,s2);
gm=s1*s2/gm;
mod=n%gm;
cnt=n/gm;
if(cnt){
cnt--;
mod+=gm;
Max=gm/s1*v1;
if(gm/s2*v2>Max)
Max=gm/s2*v2;
ans+=cnt*Max;
}
n1=mod/s1;
n2=mod/s2;
Max=0;
if(n1<n2)
{
for(i=n1;i>=0;i--)
{
tem=i*v1;
if(tem+(mod-i*s1)/s2*v2>Max)
Max=tem+(mod-i*s1)/s2*v2;
}
ans+=Max;
}
else
{
for(i=n2;i>=0;i--)
{
tem=i*v2;
if(tem+(mod-i*s2)/s1*v1>Max)
Max=tem+(mod-i*s2)/s1*v1;
}
ans+=Max;
}
printf("Case #%d: %I64d\n",cas,ans);
}
return 0;
}