import java.io.*;
import java.util.*;
class Main
{
{
String readSTR
= br.
readLine(); int set
= Integer.
parseInt(readSTR
);
for(int t = 0; t < set; t++)
{
readSTR = br.readLine();
readSTR = br.readLine();
char[] NY = readSTR.toCharArray();
//本棚データ格納
ArrayList<String> a = new ArrayList<>();
ArrayList<String> b = new ArrayList<>();
int NYF = 0;
for(int i = 0; i < NY.length; i++)
{
if(NYF == 8)
{
NYF = 0;
}
if(NYF < 4 )
{
}else{
}
NYF++;
}
boolean[][] map = CreateMap(a , b);
for(int z =0;z<map.length;z++)
{
System.
out.
println(map
[z
][0] +" "+map
[z
][1]);
}
//"Y"の座標格納
Moving m = new Moving();
m.setEnd(map.length - 1);
for(int i = 0; i < map.length; i++)
{
if(map[i][0] == true)
{
m.
roots.
add(Integer.
toString(i
) + "0"); }
if(map[i][1] == true)
{
m.
roots.
add(Integer.
toString(i
) + "1"); }
}
m.CountSteps();
}
}
{
boolean f;
if(s1.equals("Y") || s2.equals("Y"))
{
f = true;
}else{
f = false;
}
return f;
}
public static boolean[][] CreateMap(ArrayList<String> a, ArrayList<String> b)
{
boolean[][] map = new boolean[a.size() / 2 + 1][2];
map[0][0] = NYJudgment(a.get(0),"N");
map[0][1] = NYJudgment(b.get(0),"N");
map[map.length - 1][0] = NYJudgment(a.get(a.size() - 1),"N");
map[map.length - 1][1] = NYJudgment(b.get(b.size() - 1),"N");
for(int i = 1; i <= map.length - 2; i++)
{
map[i][0] = NYJudgment(a.get(i*2), a.get(i*2-1));
map[i][1] = NYJudgment(b.get(i*2), b.get(i*2-1));
}
return map;
}
}
class Moving
{
int[] location = new int[2];
//location[0] = 0;
//location[1] = 0;
int steps = 0;
int end;
ArrayList<String> roots = new ArrayList<>();
public void setEnd(int end)
{
this.end = end;
}
public void CountSteps()
{
{
if(location[0] != x)
{
moveRight(x);
}
moveUpDown(y);
}
}
public void moveUpDown(int y)
{
if(location[1] == 0)
{
if(y == 0)
{
steps += 1;
location[1] = 1;
}else if(y == 1){
steps += 2;
location[1] = 2;
}
}
if(location[1] == 1)
{
if(y == 0)
{
location[1] = 0;
}else if(y == 1)
{
location[1] = 2;
}
steps += 1;
}
if(location[1] == 2)
{
if(y == 1)
{
steps +=1;
location[1] = 1;
}else if( y == 0){
steps += 2;
location[1] = 0;
}
}
}
public void moveRight(int x)
{
for(int i = location[0]; i < x; i++)
{
steps++;
location[0]++;
}
}
public void moveEnd()
{
if(location[0] != end)
{
moveRight(end);
}
if(location[1] != 0)
{
moveUpDown(0);
}
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uCgl7CgkJQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoJCVN0cmluZyByZWFkU1RSID0gYnIucmVhZExpbmUoKTsKCQlpbnQgc2V0ID0gSW50ZWdlci5wYXJzZUludChyZWFkU1RSKTsKCQkKCQlmb3IoaW50IHQgPSAwOyB0IDwgc2V0OyB0KyspCgkJewoJCQlyZWFkU1RSID0gYnIucmVhZExpbmUoKTsKCQkJaW50IE4gPSBJbnRlZ2VyLnBhcnNlSW50KHJlYWRTVFIpOwoJCQlyZWFkU1RSID0gYnIucmVhZExpbmUoKTsKCQkJY2hhcltdIE5ZID0gIHJlYWRTVFIudG9DaGFyQXJyYXkoKTsKCgkJCS8v5pys5qOa44OH44O844K/5qC857SNCgkJCUFycmF5TGlzdDxTdHJpbmc+IGEgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCQkJQXJyYXlMaXN0PFN0cmluZz4gYiA9IG5ldyBBcnJheUxpc3Q8PigpOwoJCQlpbnQgTllGID0gMDsKCQkJZm9yKGludCBpID0gMDsgaSA8IE5ZLmxlbmd0aDsgaSsrKQoJCQl7CgkJCQlpZihOWUYgPT0gOCkKCQkJCXsKCQkJCQlOWUYgPSAwOwoJCQkJfQoJCQkJCgkJCQlpZihOWUYgPCA0ICkKCQkJCXsKCQkJCQlhLmFkZChTdHJpbmcudmFsdWVPZihOWVtpXSkpOwoJCQkJfWVsc2V7CgkJCQkJYi5hZGQoU3RyaW5nLnZhbHVlT2YoTllbaV0pKTsKCQkJCX0KCQkJCU5ZRisrOwoJCQl9CgkJCgkJCWJvb2xlYW5bXVtdIG1hcCA9IENyZWF0ZU1hcChhICwgYik7CmZvcihpbnQgeiA9MDt6PG1hcC5sZW5ndGg7eisrKQp7CglTeXN0ZW0ub3V0LnByaW50bG4obWFwW3pdWzBdICsiICIrbWFwW3pdWzFdKTsKCn0KCQkJLy8iWSLjga7luqfmqJnmoLzntI0KCQkJTW92aW5nIG0gPSBuZXcgTW92aW5nKCk7CgkJCW0uc2V0RW5kKG1hcC5sZW5ndGggLSAxKTsKCQkJZm9yKGludCBpID0gMDsgaSA8IG1hcC5sZW5ndGg7IGkrKykKCQkJewoJCQkJaWYobWFwW2ldWzBdID09IHRydWUpCgkJCQl7CgkJCQkJbS5yb290cy5hZGQoSW50ZWdlci50b1N0cmluZyhpKSArICIwIik7CgkJCQl9CgkJCQlpZihtYXBbaV1bMV0gPT0gdHJ1ZSkKCQkJCXsKCQkJCQltLnJvb3RzLmFkZChJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIjEiKTsKCQkJCX0KCQkJfQoJCQltLkNvdW50U3RlcHMoKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKG0uc3RlcHMpOwoJCQkKCQl9CgkJCgkJCgkJCgkJU3lzdGVtLm91dC5wcmludGxuKCk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBOWUp1ZGdtZW50KFN0cmluZyBzMSxTdHJpbmcgczIpCgl7CgkJYm9vbGVhbiBmOwoJCWlmKHMxLmVxdWFscygiWSIpIHx8IHMyLmVxdWFscygiWSIpKQoJCXsKCQkJZiA9IHRydWU7CgkJfWVsc2V7CgkJCWYgPSBmYWxzZTsKCQl9CgkJcmV0dXJuIGY7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgYm9vbGVhbltdW10gQ3JlYXRlTWFwKEFycmF5TGlzdDxTdHJpbmc+IGEsIEFycmF5TGlzdDxTdHJpbmc+IGIpCgl7CgkJYm9vbGVhbltdW10gbWFwID0gbmV3IGJvb2xlYW5bYS5zaXplKCkgLyAyICsgMV1bMl07CgkJbWFwWzBdWzBdID0gTllKdWRnbWVudChhLmdldCgwKSwiTiIpOwoJCW1hcFswXVsxXSA9IE5ZSnVkZ21lbnQoYi5nZXQoMCksIk4iKTsKCQltYXBbbWFwLmxlbmd0aCAtIDFdWzBdID0gTllKdWRnbWVudChhLmdldChhLnNpemUoKSAtIDEpLCJOIik7CgkJbWFwW21hcC5sZW5ndGggLSAxXVsxXSA9IE5ZSnVkZ21lbnQoYi5nZXQoYi5zaXplKCkgLSAxKSwiTiIpOwkKCQkKCQlmb3IoaW50IGkgPSAxOyBpIDw9IG1hcC5sZW5ndGggLSAyOyBpKyspCgkJewoJCQltYXBbaV1bMF0gPSBOWUp1ZGdtZW50KGEuZ2V0KGkqMiksIGEuZ2V0KGkqMi0xKSk7CgkJCW1hcFtpXVsxXSA9IE5ZSnVkZ21lbnQoYi5nZXQoaSoyKSwgYi5nZXQoaSoyLTEpKTsKCQl9CgkJcmV0dXJuIG1hcDsKCX0KCQoKCgp9CgpjbGFzcyBNb3ZpbmcKewoJaW50W10gbG9jYXRpb24gPSBuZXcgaW50WzJdOwoJLy9sb2NhdGlvblswXSA9IDA7CgkvL2xvY2F0aW9uWzFdID0gMDsKCWludCBzdGVwcyA9IDA7CglpbnQgZW5kOwoJQXJyYXlMaXN0PFN0cmluZz4gcm9vdHMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCQoJcHVibGljIHZvaWQgc2V0RW5kKGludCBlbmQpCgl7CgkJdGhpcy5lbmQgPSBlbmQ7Cgl9CgkKCXB1YmxpYyB2b2lkIENvdW50U3RlcHMoKQoJewoJCWZvcihTdHJpbmcgczogcm9vdHMpCgkJewoJCQlTdHJpbmdbXSBzdHIgPSBzLnNwbGl0KCIiKTsKCQkJaW50IHggPSBJbnRlZ2VyLnBhcnNlSW50KHN0clswXSk7CgkJCWludCB5ID0gSW50ZWdlci5wYXJzZUludChzdHJbMV0pOwoJCQlpZihsb2NhdGlvblswXSAhPSB4KQoJCQl7CgkJCQltb3ZlUmlnaHQoeCk7CgkJCX0KCQkJbW92ZVVwRG93bih5KTsKCQl9CgkJCgl9CgkKCXB1YmxpYyB2b2lkIG1vdmVVcERvd24oaW50IHkpCgl7CgkJaWYobG9jYXRpb25bMV0gPT0gMCkKCQl7CgkJCWlmKHkgPT0gMCkKCQkJewoJCQkJc3RlcHMgKz0gMTsKCQkJCWxvY2F0aW9uWzFdID0gMTsKCQkJfWVsc2UgaWYoeSA9PSAxKXsKCQkJCXN0ZXBzICs9IDI7CgkJCQlsb2NhdGlvblsxXSA9IDI7CgkJCX0KCQkJCgkJfQoJCQoJCWlmKGxvY2F0aW9uWzFdID09IDEpCgkJewoJCQlpZih5ID09IDApCgkJCXsKCQkJCWxvY2F0aW9uWzFdID0gMDsKCQkJfWVsc2UgaWYoeSA9PSAxKQoJCQl7CgkJCQlsb2NhdGlvblsxXSA9IDI7CgkJCX0KCQkJc3RlcHMgKz0gMTsKCQl9CgkJCgkJaWYobG9jYXRpb25bMV0gPT0gMikKCQl7CgkJCWlmKHkgPT0gMSkKCQkJewoJCQkJc3RlcHMgKz0xOwoJCQkJbG9jYXRpb25bMV0gPSAxOwoJCQl9ZWxzZSBpZiggeSA9PSAwKXsKCQkJCXN0ZXBzICs9IDI7CgkJCQlsb2NhdGlvblsxXSA9IDA7CgkJCX0KCQkJCgkJfQoJfQoJCglwdWJsaWMgdm9pZCBtb3ZlUmlnaHQoaW50IHgpCgl7CgkJZm9yKGludCBpID0gbG9jYXRpb25bMF07IGkgPCB4OyBpKyspCgkJewoJCQlzdGVwcysrOwoJCQlsb2NhdGlvblswXSsrOwoJCX0KCX0KCQoJcHVibGljIHZvaWQgbW92ZUVuZCgpCgl7CgkJaWYobG9jYXRpb25bMF0gIT0gZW5kKQoJCXsKCQkJbW92ZVJpZ2h0KGVuZCk7CgkJfQoJCWlmKGxvY2F0aW9uWzFdICE9IDApCgkJewoJCQltb3ZlVXBEb3duKDApOwoJCX0KCX0KfQ==