← Home
package main

import (
	"bufio"
	"io"
	"os"
	"strconv"
)

func gcd(a, b int64) int64 {
	for b != 0 {
		a, b = b, a%b
	}
	if a < 0 {
		return -a
	}
	return a
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt64 := func() int64 {
		for idx < len(data) && (data[idx] == ' ' || data[idx] == '\n' || data[idx] == '\r' || data[idx] == '\t') {
			idx++
		}
		var sign int64 = 1
		if idx < len(data) && data[idx] == '-' {
			sign = -1
			idx++
		}
		var val int64
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int64(data[idx]-'0')
			idx++
		}
		return val * sign
	}

	n := int(nextInt64())
	m := int(nextInt64())

	a0 := nextInt64()
	var g int64
	for i := 1; i < n; i++ {
		x := nextInt64()
		d := x - a0
		if d < 0 {
			d = -d
		}
		g = gcd(g, d)
	}

	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	for i := 0; i < m; i++ {
		b := nextInt64()
		ans := gcd(a0+b, g)
		if i > 0 {
			w.WriteByte(' ')
		}
		w.WriteString(strconv.FormatInt(ans, 10))
	}
	w.WriteByte('\n')
	w.Flush()
}