#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct num{
int v;
num(){}
num(int v):v(v){}
};
int mp[5][5]={{},{0, 1,2,3,4} ,
{0, 2,-1,4,-3},
{0, 3,-4,-1,2},
{0, 4,3,-2,-1}};
int c2i(char c)
{
switch(c)
{
case '1':return 1;
case 'i':return 2;
case 'j':return 3;
case 'k':return 4;
}
throw;
}
num operator*(num a,num b)
{
bool neg=(a.v<0)^(b.v<0);
int v=mp[abs(a.v)][abs(b.v)];
neg^=(v<0);
v=abs(v);
if(neg)v=-v;
return {v};
}
struct repstr{
string s;
ll rep;
ll size()const
{return s.size()*rep;}
char operator[](ll i)
{return s[i%s.size()];}
};
int main()
{
int T;
scanf("%d",&T);
int no=1;
while(no<=T)
{
ll l,x;
cin>>l>>x;
repstr s;
cin>>s.s;
s.rep=x;
num t=1;
num goal=2;
ll i;
bool ok=0;
ll j=-1;
for(i=0;i<s.size();i++)
{
t=t*c2i(s[i]);
if(t.v==goal.v)
goal.v++, t=1, j=i;
else if((i-j)==l*4)
{ok=0; break;}
if(goal.v==5){ok=1; break;}
}
if(ok)
{
t=1;
for(i++;(s.size()-i)%(4*l)!=0;i++)
{
t=t*c2i(s[i]);
}
if(t.v!=1)
ok=0;
}
if(ok)
printf("Case #%d: YES\n",no++);
else
printf("Case #%d: NO\n",no++);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnN0cnVjdCBudW17CglpbnQgdjsKCW51bSgpe30KCW51bShpbnQgdik6dih2KXt9Cn07CmludCBtcFs1XVs1XT17e30sezAsIDEsMiwzLDR9ICwKCQkJCSAgezAsIDIsLTEsNCwtM30sCgkJCQkgIHswLCAzLC00LC0xLDJ9LAoJCQkJICB7MCwgNCwzLC0yLC0xfX07CmludCBjMmkoY2hhciBjKQp7Cglzd2l0Y2goYykKCXsKCQljYXNlICcxJzpyZXR1cm4gMTsKCQljYXNlICdpJzpyZXR1cm4gMjsKCQljYXNlICdqJzpyZXR1cm4gMzsKCQljYXNlICdrJzpyZXR1cm4gNDsKCX0KCXRocm93Owp9Cm51bSBvcGVyYXRvcioobnVtIGEsbnVtIGIpCnsKCWJvb2wgbmVnPShhLnY8MCleKGIudjwwKTsKCWludCB2PW1wW2FicyhhLnYpXVthYnMoYi52KV07CgluZWdePSh2PDApOwoJdj1hYnModik7CglpZihuZWcpdj0tdjsKCXJldHVybiB7dn07Cn0Kc3RydWN0IHJlcHN0cnsKCXN0cmluZyBzOwoJbGwgcmVwOwoJbGwgc2l6ZSgpY29uc3QKCXtyZXR1cm4gcy5zaXplKCkqcmVwO30KCWNoYXIgb3BlcmF0b3JbXShsbCBpKQoJe3JldHVybiBzW2klcy5zaXplKCldO30KfTsKaW50IG1haW4oKQp7CglpbnQgVDsKCXNjYW5mKCIlZCIsJlQpOwoJaW50IG5vPTE7Cgl3aGlsZShubzw9VCkKCXsKCQlsbCBsLHg7CgkJY2luPj5sPj54OwoJCXJlcHN0ciBzOwoJCWNpbj4+cy5zOwoJCXMucmVwPXg7CgkJbnVtIHQ9MTsKCQludW0gZ29hbD0yOwoJCWxsIGk7CgkJYm9vbCBvaz0wOwoJCWxsIGo9LTE7CgkJZm9yKGk9MDtpPHMuc2l6ZSgpO2krKykKCQl7CgkJCXQ9dCpjMmkoc1tpXSk7CgkJCWlmKHQudj09Z29hbC52KQoJCQkJZ29hbC52KyssIHQ9MSwgaj1pOwoJCQllbHNlIGlmKChpLWopPT1sKjQpCgkJCQl7b2s9MDsgYnJlYWs7fQoJCQlpZihnb2FsLnY9PTUpe29rPTE7IGJyZWFrO30KCQl9CgkJaWYob2spCgkJewoJCQl0PTE7CgkJCWZvcihpKys7KHMuc2l6ZSgpLWkpJSg0KmwpIT0wO2krKykKCQkJewoJCQkJdD10KmMyaShzW2ldKTsKCQkJfQoJCQlpZih0LnYhPTEpCgkJCQlvaz0wOwoJCX0KCQlpZihvaykKCQkJcHJpbnRmKCJDYXNlICMlZDogWUVTXG4iLG5vKyspOwoJCWVsc2UKCQkJcHJpbnRmKCJDYXNlICMlZDogTk9cbiIsbm8rKyk7Cgl9Cn0K