#include <bits/stdc++.h>
using namespace std;
const int N = 400;
struct train {
  char pos[3][N];
};
int t, n, k;
train tmap[N];
bool dp[5][N];
bool isword(char c) { return 'A' <= c && c <= 'Z'; }
void findpostrain(int val) {
  for (int i = 1; i <= 3; i++) {
    for (int j = 0; j < n; j++) {
      tmap[val].pos[i][j] = tmap[val - 1].pos[i][j];
      if (tmap[val - 1].pos[i][j] != tmap[val - 1].pos[i][j + 1]) {
        tmap[val].pos[i][j] = tmap[val - 1].pos[i][j + 1];
        if (j != 0) {
          tmap[val].pos[i][j - 1] = tmap[val - 1].pos[i][j + 1];
        }
      }
    }
  }
}
void trainrun() {
  for (int i = 1; i <= 3; i++) {
    tmap[0].pos[i][n] = '.';
    for (int j = 0; j < n; j++) {
      dp[i][j] = false;
      if (tmap[0].pos[i][j] == 's') {
        dp[i][0] = true;
        tmap[0].pos[i][j] = '.';
      }
    }
  }
  for (int i = 1; i < n; i++) {
    for (int j = 1; j <= 3; j++) {
      tmap[i].pos[j][n] = '.';
    }
    findpostrain(i);
  }
}
int main() {
  scanf("%d", &t);
  while (t--) {
    scanf("%d%d", &n, &k);
    for (int i = 1; i <= 3; i++) {
      scanf("%s", tmap[0].pos[i]);
    }
    trainrun();
    bool ans = false;
    for (int i = 0; i < n; i++) {
      for (int j = 1; j <= 3; j++) {
        if (!isword(tmap[i + 1].pos[j - 1][i + 1]) &&
            !isword(tmap[i].pos[j - 1][i + 1]) &&
            !isword(tmap[i].pos[j][i + 1]) && j > 1) {
          dp[j - 1][i + 1] = dp[j][i] || dp[j - 1][i + 1];
        }
        if (!isword(tmap[i + 1].pos[j + 1][i + 1]) &&
            !isword(tmap[i].pos[j + 1][i + 1]) &&
            !isword(tmap[i].pos[j][i + 1]) && j < 3) {
          dp[j + 1][i + 1] = dp[j][i] || dp[j + 1][i + 1];
        }
        if (!isword(tmap[i + 1].pos[j][i + 1]) &&
            !isword(tmap[i].pos[j][i + 1])) {
          dp[j][i + 1] = dp[j][i] || dp[j][i + 1];
        }
      }
    }
    ans = dp[1][n - 1] || dp[2][n - 1] || dp[3][n - 1];
    if (ans) {
      puts("YES");
    } else {
      puts("NO");
    }
  }
}
