

#include<bits/stdc++.h>
using namespace std;
double f1;
char s[2020],t[300];
int f[10000],k,a[100];
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
memset(f,0,sizeof(f));memset(a,0,sizeof(a));
k++;
printf("Case #%d: ",k);
scanf("%s",s);
scanf("%s",t);
for (int i=0; i<26; i++)
{
if (t[i]=='h') f[i]=1;
if (t[i]=='d') f[i]=2;
if (t[i]=='w') f[i]=3;
}
int len=strlen(s);
for (int i=0; i<len; i++)
{
a[f[s[i]-'a']]++;
}
f1=a[1]*1.0/len;
if (f1>=0.25)
{
printf("Harmful
");
}
else if (f1<=0.1)
{
printf("Recyclable
");
}
else
{
if (a[2]>=a[3]*2)
{
printf("Dry
");
}
else
{
printf("Wet
");
}
}
}
}

#include<bits/stdc++.h>
using namespace std;
map<string,char>mp;
string s,s1,ss,c[1000],c1[1000],a[1000000],S,ans;
int main()
{
int T;
mp["0000"]='0';
mp["0001"]='1';
mp["0010"]='2';
mp["0011"]='3';
mp["0100"]='4';
mp["0101"]='5';
mp["0110"]='6';
mp["0111"]='7';
mp["1000"]='8';
mp["1001"]='9';
mp["1010"]='a';
mp["1011"]='b';
mp["1100"]='c';
mp["1101"]='d';
mp["1110"]='e';
mp["1111"]='f';
scanf("%d",&T);
for(int t=1; t<=T; t++)
{
printf("Case #%d: ",t);
cin>>s;
for (int k=0; k<8; k++)
{
s1="";
for (int i=0; i<4; i++)
{
ss="";
for (int j=0; j<4; j++)
{
ss+=s[k*16+i*4+j];
}
s1+=mp[ss];
}
c[k]=s1;
}
for (int i=0; i<8; i++)
{
c1[i]="";
int j;
for (j=0; j<4; j++)
{
if (c[i][j]!='0')
{
break;
}
}
if (j==4)
{
c1[i]="0";
}
else
{
for (int k=j; k<4; k++)
{
c1[i]+=c[i][k];
}
}
}
int cnt=1;
a[0]="";
for (int i=0;i<8;i++){
if (i!=7){
a[0]=a[0]+c1[i]+":";
}else{
a[0]=a[0]+c1[i];
}
}
for (int i=0; i<8; i++)
{
for (int j=7; j>=i; j--)
{
int k;
if (j-i+1>=2)
{
for (k=i; k<=j; k++)
{
if (c1[k]!="0")
{
break;
}
}
if (k==j+1)
{
S="";
for (int l=0; l<i; l++)
{
S=S+c1[l]+":";
}
if (i==0)
{
S=S+":";
}
S=S+":";
for (int l=j+1; l<8; l++)
{
S=S+c1[l];
if (l!=7)
{
S=S+":";
}
}
a[cnt++]=S;
}
}
}
}
int len=10000;
ans="";
for (int i=0; i<cnt; i++)
if (a[i].length()<len)
{
len=a[i].length();
ans=a[i];
}
else
{
if (a[i].size()==len)
{
if (a[i]<ans)
{
ans=a[i];
}
}
}
cout<<ans<<endl;
}
return 0;
}

#include<bits/stdc++.h>
using namespace std;
int n,b[10000],v[100000],k,l,r;
bool check(int x)
{
int f,t=0;
for (int i=n; i>=1; i--)
{
f=0;
for (int j=1; j<=t; j++)
{
if (b[j]+v[i]<=x)
{
b[j]+=v[i];
f=1;
break;
}
}
if (f==0)
{
b[++t]=v[i];
if (t>k) return 0;
}
}
return 1;
}
int main()
{
int T;
scanf("%d",&T);
for (int t=1; t<=T; t++)
{
printf("Case #%d: ",t);
scanf("%d%d",&n,&k);
for (int i=1; i<=n; i++)
{
scanf("%d",&v[i]);
}
sort(v+1,v+1+n);
l=v[n];
r=1000000;
while (l<r)
{
int mid=(l+r)>>1;
if (check(mid))
{
r=mid;
}
else
{
l=mid+1;
}
}
for (int i=max(1,l-60);; i++)
{
if (check(i))
{
printf("%d
",i);
break;
}
}
}
return 0;
}




#include<bits/stdc++.h>
using namespace std;
int n,f[2010][2010],tt;
int main()
{
int T;
scanf("%d",&T);
for (int t=1; t<=T; t++)
{
printf("Case #%d: ",t);
scanf("%d",&n);
if (n==1)
{
puts("Yes");
puts("0");
puts("1");
continue;
}
if (n%4==2||n%4==3)
{
puts("No");
continue;
}
puts("Yes");
if (n%4==0)
{
for (int i=1; i<=n/2; i++)
{
for (int j=1; j<=n; j++)
{
tt=i+j;
if (tt>n)
{
tt-=n;
}
f[tt][j]=j&1;
f[j][tt]=j&1;
}
}
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
printf("%d",f[i][j]);
}
printf("
");
}
for (int i=1; i<n; i++)
{
printf("%d",i+1);
if (i!=n)
{
printf(" ");
}
else
{
printf("
");
}
}
printf("1
");
}
else
{
n--;
for (int i=1; i<=n/2; i++)
{
for (int j=1; j<=n; j++)
{
tt=i+j;
if (tt>n)
{
tt-=n;
}
f[tt][j]=j&1;
f[j][tt]=j&1;
}
}
n++;
for (int i=1;i<n;i++){
f[i][n]=f[n][i]=i&1;
}
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
printf("%d",f[i][j]);
}
printf("
");
}
for (int i=1; i<n-1; i++)
{
printf("%d ",i+1);
}
printf("1 %d
",n);
}
}
}


#include<bits/stdc++.h>
using namespace std;
int ans[20],n;
int a[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
string s[100010];
int f(char c)
{
return ans[c-'A'];
}
bool check(int id)
{
int year=f(s[id][0])*1000+f(s[id][1])*100+f(s[id][2])*10+f(s[id][3]);
int mouth=f(s[id][5])*10+f(s[id][6]);
int day=f(s[id][8])*10+f(s[id][9]);
if (year%400==0||(year%4==0&&year%100!=0))
{
a[2]=29;
}
if (year<1600||year>9999||mouth>12||mouth<1||day<1||day>a[mouth])
{
return 0;
}
if(mouth<=2)
{
mouth+=12;
year--;
}
int tmp=(day+mouth*2+3*(mouth+1)/5+year+year/4-year/100+year/400+1)%7;
if (tmp==5)
{
return 1;
}
return 0;
}
int main()
{
int T;
scanf("%d",&T);
for (int t=1; t<=T; t++)
{
printf("Case #%d: ",t);
scanf("%d",&n);
for (int i=0; i<10; i++)
{
ans[i]=i;
}
for (int i=0; i<n; i++)
{
cin>>s[i];
}
sort(s,s+n);
n=unique(s,s+n)-s;
int f=1;
do
{
int i;
for (i=0; i<n; i++)
{
if (!check(i))
{
break;
}
}
if (i==n)
{
for (int i=0; i<10; i++)
{
printf("%d",ans[i]);
}
f=0;
puts("");
break;
}
}
while (next_permutation(ans,ans+10));
if (f)
{
puts("Impossible");
}
}
}