#include using namespace std; static pair dirVec(char d){ if(d=='R') return { 1, 0}; if(d=='L') return {-1, 0}; if(d=='U') return { 0, 1}; return { 0,-1}; // 'D' } static bool nonneg_ratio(long long num, long long den){ // den != 0 のとき num/den >= 0 を判定 return (den > 0) ? (num >= 0) : (num <= 0); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while(T--){ long long x1, y1, x2, y2; char d1, d2; cin >> x1 >> y1 >> d1; cin >> x2 >> y2 >> d2; auto v1 = dirVec(d1); auto v2 = dirVec(d2); long long dx = x1 - x2; long long dy = y1 - y2; long long ax = v2.first - v1.first; // x の相対速度 long long ay = v2.second - v1.second; // y の相対速度 bool ok = false; // 相対速度が 0(同方向同速度)なら、初期位置が違うので絶対に会わない if(ax == 0 && ay == 0){ ok = false; } else if(ax == 0){ // x 方向で追いつけないので、最初から x が一致していないと無理 if(dx != 0) ok = false; else ok = nonneg_ratio(dy, ay); // t = dy/ay が >= 0 か } else if(ay == 0){ if(dy != 0) ok = false; else ok = nonneg_ratio(dx, ax); // t = dx/ax が >= 0 か } else{ // t が一致する条件: dx/ax == dy/ay <=> dx*ay == dy*ax __int128 left = (__int128)dx * (__int128)ay; __int128 right = (__int128)dy * (__int128)ax; if(left != right) ok = false; else ok = nonneg_ratio(dx, ax); // t = dx/ax >= 0 } cout << (ok ? "Yes" : "No") << '\n'; } return 0; }