← Home
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)
	}
}