#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int half,a[7],b[20005],f[120005];
void ZeroOnePack(int w,int v) //0,1背包
{ int i;
for(i=half;i>=w;i--)
if(f[i-w]+v>f[i]) f[i]=f[i-w]+v;
}
int main()
{
int n,m,i,j,k,sum,flag,c=0;
while(scanf("%d %d %d %d %d %d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF){
if(a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0&&a[5]==0&&a[6]==0) break;
c++;
sum=0; flag=0;
for(i=1;i<7;i++) { a[i]%=60; sum+=a[i]*i; } //不模60或其他较大一些的偶数的话,会超时
if(sum%2!=0) flag=0;
else{
half=sum/2;
memset(f,0,sizeof(f));
k=0;
for(i=1;i<7;i++){
if(a[i]){ //将多重背包转化成0,1背包
for(j=0;j<a[i];j++)
b[k++]=i;
}
}
for(i=0;i<k;i++){
ZeroOnePack(b[i],b[i]);
if(f[half]==half) {
flag=1;
break;
}
}
}
if(flag)
printf("Collection #%d:\nCan be divided.\n\n",c);
else
printf("Collection #%d:\nCan't be divided.\n\n",c);
}
return 0;
}
#include<stdlib.h>
#include<string.h>
int half,a[7],b[20005],f[120005];
void ZeroOnePack(int w,int v) //0,1背包
{ int i;
for(i=half;i>=w;i--)
if(f[i-w]+v>f[i]) f[i]=f[i-w]+v;
}
int main()
{
int n,m,i,j,k,sum,flag,c=0;
while(scanf("%d %d %d %d %d %d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF){
if(a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0&&a[5]==0&&a[6]==0) break;
c++;
sum=0; flag=0;
for(i=1;i<7;i++) { a[i]%=60; sum+=a[i]*i; } //不模60或其他较大一些的偶数的话,会超时
if(sum%2!=0) flag=0;
else{
half=sum/2;
memset(f,0,sizeof(f));
k=0;
for(i=1;i<7;i++){
if(a[i]){ //将多重背包转化成0,1背包
for(j=0;j<a[i];j++)
b[k++]=i;
}
}
for(i=0;i<k;i++){
ZeroOnePack(b[i],b[i]);
if(f[half]==half) {
flag=1;
break;
}
}
}
if(flag)
printf("Collection #%d:\nCan be divided.\n\n",c);
else
printf("Collection #%d:\nCan't be divided.\n\n",c);
}
return 0;
}