icpc 西安 F dp
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000005;
char str[maxn];
int a[maxn],dp[maxn][2],o[maxn],f[maxn];
int main(){
int T;scanf("%d",&T);
int ca = 0;
while(T--){
printf("Case #%d: ",++ca);
int x,y,n;
scanf("%s%d%d",str+1,&x,&y);
n = strlen(str+1);
for( int i = 1;i <= n;i++ ){
a[i] = !(str[i]=='a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u');
if( str[i] == '?' ) a[i] = -1;
}
bool flag = false;
for( int i = 1;i <= n;i++ ){
if( a[i] == 0 ){
o[i] = o[i-1] + 1;
f[i] = 0;
}else if( a[i] == 1 ){
f[i] = f[i-1] +1;
o[i] = 0;
}else{
f[i] = f[i-1] + 1;
o[i] = o[i-1] + 1;
}
if( o[i] >= x || f[i] >= y ){
flag = true;
}
}
if( !flag ){
puts("LIKE");
continue;
}
for( int i = 1;i <= n;i++ ){
dp[i][0] = dp[i][1] = -1;
if( a[i] == -1 ){
if( dp[i-1][1] != -1 ) dp[i][0] = 1;
else if( dp[i-1][0] != -1 && dp[i][0] < x-1 ) dp[i][0] = dp[i-1][0] + 1;
if( dp[i-1][0] != -1 ) dp[i][1] = 1;
else if( dp[i-1][1] != -1 && dp[i][1] < y-1 ) dp[i][1] = dp[i-1][1] + 1;
}else if(a[i] == 0 ){
if( dp[i-1][1] != -1 ) dp[i][0] = 1;
else if( dp[i-1][0] != -1 && dp[i][0] < x-1 ) dp[i][0] = dp[i-1][0] + 1;
}else if( a[i] == 1 ){
if( dp[i-1][0] != -1 ) dp[i][1] = 1;
else if( dp[i-1][1] != -1 && dp[i][1] < y-1 ) dp[i][1] = dp[i-1][1] + 1;
}
if( dp[i][0] >= x ) dp[i][0] = -1;
if( dp[i][1] >= y ) dp[i][1] = -1;
}
flag = true;
for( int i = 1;i <= n;i++ ){
if( dp[i][0] == -1 && dp[i][1] == -1 )
flag = false;
}
if( flag ){
puts("SURPRISE");
}else{
puts("DISLIKE");
}
}
return 0;
}