class Car property x : Int64 property y : Int64 property d : Char def initialize(@x : Int64, @y : Int64, @d : Char) end end def distance(c1, c2) (c2.x - c1.x).abs + (c2.y - c1.y).abs end t = read_line.to_i64 ans = (1..t).map { cars = Array.new(2) { x, y, d = read_line.chomp.split; Car.new(x.to_i64, y.to_i64, d.chars[0]) } next false if cars[0].d == cars[1].d if cars.any?(&.d.==('L')) && cars.any?(&.d.==('R')) cars.swap(0, 1) unless cars[0].d == 'L' cars[0].y == cars[1].y && cars[0].x > cars[1].x elsif cars.any?(&.d.==('U')) && cars.any?(&.d.==('D')) cars.swap(0, 1) unless cars[0].d == 'U' cars[0].x == cars[1].x && cars[0].y < cars[1].y else cars.swap(0, 1) unless {'L', 'R'}.includes?(cars[0].d) if cars[0].x > cars[1].x d = (cars[0].x - cars[1].x).abs cars[0].x -= 2_i64 * d cars[0].d = cars[0].d == 'L' ? 'R' : 'L' end if cars[0].y > cars[1].y d = (cars[0].y - cars[1].y).abs cars[0].y -= 2_i64 * d cars[1].d = cars[1].d == 'D' ? 'U' : 'D' end collision_point = Car.new(cars[1].x, cars[0].y, '_') d0 = distance(cars[0], collision_point) d1 = distance(cars[1], collision_point) d0 == d1 && cars[0].d == 'R' && cars[1].d == 'D' end }.map { |elem| elem ? "Yes" : "No" }.join('\n') puts ans