← Home
 ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	fmt.Fscan(reader, &t)

	for tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(reader, &n)
		
		var s [2]string
		fmt.Fscan(reader, &s[0])
		fmt.Fscan(reader, &s[1])

		visited := make([][]bool, 2)
		for i := 0; i < 2; i++ {
			visited[i] = make([]bool, n)
		}

		queue := make([][2]int, 0, 2*n)
		queue = append(queue, [2]int{0, 0})
		visited[0][0] = true
		found := false

		dirs := [][2]int{{0, 1}, {0, -1}, {1, 0}, {-1, 0}}

		for len(queue) > 0 && !found {
			curr := queue[0]
			queue = queue[1:]
			r, c := curr[0], curr[1]

			if r == 1 && c == n-1 {
				found = true
				break
			}

			for _, d := range dirs {
				nr, nc := r+d[0], c+d[1]
				if nr >= 0 && nr < 2 && nc >= 0 && nc < n {
					var nc2 int
					if s[nr][nc] == '>' {
						nc2 = nc + 1
					} else {
						nc2 = nc - 1
					}
					if nc2 >= 0 && nc2 < n && !visited[nr][nc2] {
						visited[nr][nc2] = true
						queue = append(queue, [2]int{nr, nc2})
					}
				}
			}
		}

		if found {
			fmt.Fprintln(writer, "YES")
		} else {
			fmt.Fprintln(writer, "NO")
		}
	}
}
```