package main
import (
"bufio"
"fmt"
"os"
)
func gcd(a, b int64) int64 {
for b != 0 {
a, b = b, a%b
}
return a
}
func solve() {
var in = bufio.NewReader(os.Stdin)
var out = bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
fmt.Fscan(in, &t)
for tc := 0; tc < t; tc++ {
var n int
fmt.Fscan(in, &n)
p := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &p[i])
}
s := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &s[i])
}
if p[n-1] != s[0] {
fmt.Fprintln(out, "No")
continue
}
possible := true
for i := 0; i < n-1; i++ {
if p[i]%p[i+1] != 0 {
possible = false
break
}
if s[i+1]%s[i] != 0 {
possible = false
break
}
}
if !possible {
fmt.Fprintln(out, "No")
continue
}
for i := 1; i < n; i++ {
B := p[i-1] / p[i]
if B > 1 {
A := s[i] / gcd(s[i], p[i])
if gcd(A, B) > 1 {
possible = false
break
}
}
}
if !possible {
fmt.Fprintln(out, "No")
continue
}
for i := 0; i < n-1; i++ {
B := s[i+1] / s[i]
if B > 1 {
A := p[i] / gcd(p[i], s[i])
if gcd(A, B) > 1 {
possible = false
break
}
}
}
if possible {
fmt.Fprintln(out, "Yes")
} else {
fmt.Fprintln(out, "No")
}
}
}
func main() {
solve()
}