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