← Home
package main

import (
	"bufio"
	"fmt"
	"math/bits"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	for i := 0; i < t; i++ {
		var a, b, d uint64
		fmt.Fscan(reader, &a, &b, &d)

		c := a | b
		tz := bits.TrailingZeros64(d)

		if (c & ((uint64(1) << tz) - 1)) != 0 {
			fmt.Fprintln(writer, -1)
			continue
		}

		d_odd := d >> tz
		c_shifted := c >> tz

		inv := uint64(1)
		for j := 0; j < 6; j++ {
			inv = inv * (2 - d_odd*inv)
		}

		mask := (uint64(1) << (30 - tz)) - 1
		m := (c_shifted * inv) & mask
		x := m * d

		fmt.Fprintln(writer, x)
	}
}