← Home
```go
package main

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

func main() {
	var scanner = bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	var writer = bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	scanInt := func() int {
		scanner.Scan()
		num, _ := strconv.Atoi(scanner.Text())
		return num
	}

	t := scanInt()
	for i := 0; i < t; i++ {
		n := scanInt()
		a := make([]int, n)
		for j := 0; j < n; j++ {
			a[j] = scanInt()
		}
		b := make([]int, n)
		for j := 0; j < n; j++ {
			b[j] = scanInt()
		}

		diff := -1
		possible := true

		for j := 0; j < n; j++ {
			if a[j] < b[j] {
				possible = false
				break
			}
			if b[j] > 0 {
				d := a[j] - b[j]
				if diff == -1 {
					diff = d
				} else if diff != d {
					possible = false
					break
				}
			}
		}

		if possible && diff != -1 {
			for j := 0; j < n; j++ {
				if b[j] == 0 {
					if a[j] > diff {
						possible = false
						break
					}
				}
			}
		}

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