#include <cstdio>
#include <string>
#define min(x,y) ( x<y?x:y )
#define rg(x,y) ( x=(y>x?y:x) )
int N,c1,c2,c3,def,w[100],s[100],m[2][501][501],cs;
int wa,wb,wc,sa,sb,sc,da,db,dc,mx,my;
int init()
{
scanf("%d", &N);
if(!N)
{
return 0;
}
int i;
scanf("%d%d%d", &wa,&sa,&da);
scanf("%d%d%d", &wb,&sb,&db);
scanf("%d%d%d", &wc,&sc,&dc);
scanf("%d%d%d%d", &c1,&c2,&c3,&def);
for(i=0;i<N;i++)
scanf("%d%d", &w[i], &s[i]);
def -= c1*da + c2*db + c3*dc;
memset(m, 0xff, sizeof(m));
return N;
}
void dp()
{
int i,mmx,mmy,x,y,ix,iy,iz,rw,rs;
mx=0;
my=0;
m[0][0][0]=0;
for(i=0; i<N; i++)
{
memset(m[1], 0xff, sizeof(m[1]));
mmx = mx;
mmy = my;
for(x=0; x<=mx; x++)
{
for(y=0; y<=my; y++)
{
if(m[0][x][y]!=-1)
{
for(ix=0; w[i]-ix*wa>=0&&s[i]-ix*sa>=0; ix++)
{
rw=w[i]-ix*wa;//第i辆车去掉x(a)的部分,剩余的weight和size
rs=s[i]-ix*sa;
for(iy=0; rw-iy*wb>=0&&rs-iy*sb>=0; iy++)
{
//rw-iy*wb;//第i辆车去掉y(b)的部分,剩余的weight和size
//rs-iy*sb;
iz=min((rw-iy*wb)/wc, (rs-iy*sb)/sc);//最后剩余的部分最多能装z(c)的部分
rg(m[1][x+ix][y+iy], iz+m[0][x][y]);
rg(mmx, x+ix);
rg(mmy, y+iy);
}
}
}
}
}
mx=mmx;
my=mmy;
memcpy(m[0],m[1],sizeof(m[1]));
}
}
void print()
{
int ans=0, t;
int x, y, z;
for(x=0;x<=mx;x++)
{
for(y=0;y<=my;y++)
{
z=m[0][x][y];
if(z!=-1)
{
t=da*x + db*y + dc*z;
rg(ans, t);
if(def>0)
{
t += min(min(x/c1,y/c2),z/c3)*def;
}
rg(ans, t);
}
}
}
if(cs++)
{
printf("/n");
}
printf("Case %d: %d/n", cs,ans);
}
int main()
{
freopen("1.txt", "r", stdin);
cs=0;
while(init())
{
dp();
print();
}
return 0;
}