```go
package main
import (
"bufio"
"os"
)
func readInt(scanner *bufio.Scanner) int {
scanner.Scan()
res := 0
for _, b := range scanner.Bytes() {
res = res*10 + int(b-'0')
}
return res
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
buf := make([]byte, 1024*1024)
scanner.Buffer(buf, bufio.MaxScanTokenSize)
if !scanner.Scan() {
return
}
res := 0
for _, b := range scanner.Bytes() {
res = res*10 + int(b-'0')
}
t := res
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for tc := 0; tc < t; tc++ {
n := readInt(scanner)
a := make([]int, n)
freq := make([]int, n+1)
for i := 0; i < n; i++ {
a[i] = readInt(scanner)
freq[a[i]]++
}
b := make([]int, n)
for i := 0; i < n; i++ {
b[i] = readInt(scanner)
}
maxFreq := 0
u := -1
for i := 1; i <= n; i++ {
if freq[i] > maxFreq {
maxFreq = freq[i]
u = i
}
}
adj := make([][]int, n+1)
for i := 0; i < n; i++ {
u_edge := a[i]
v_edge := b[i]
adj[u_edge] = append(adj[u_edge], v_edge)
}
indegree := make([]int, n+1)
for i := 1; i <= n; i++ {
if i == u {
continue
}
for _, neighbor := range adj[i] {
if neighbor != u {
indegree[neighbor]++
}
}
}
queue := make([]int, 0, n)
for i := 1; i <= n; i++ {
if i != u && indegree[i] == 0 {
queue = append(queue, i)
}
}
visitedCount := 0
for len(queue) > 0 {
curr := queue[0]
queue = queue[1:]
visitedCount++
for _, neighbor := range adj[curr] {
if neighbor != u {
indegree[neighbor]--
if indegree[neighbor] == 0 {
queue = append(queue, neighbor)
}
}
}
}
if visitedCount == n-1 {
out.WriteString("AC\n")
} else {
out.WriteString("WA\n")
}
}
}
```