package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
if _, err := fmt.Fscan(in, &t); err != nil {
return
}
for i := 0; i < t; i++ {
var x, y, p, q int64
fmt.Fscan(in, &x, &y, &p, &q)
if p == 0 {
if x == 0 {
fmt.Fprintln(out, 0)
} else {
fmt.Fprintln(out, -1)
}
continue
}
if p == q {
if x == y {
fmt.Fprintln(out, 0)
} else {
fmt.Fprintln(out, -1)
}
continue
}
a1 := (x + p - 1) / p
a2 := (y - x + q - p - 1) / (q - p)
a3 := (y + q - 1) / q
a := a1
if a2 > a {
a = a2
}
if a3 > a {
a = a3
}
ans := a*q - y
fmt.Fprintln(out, ans)
}
}