Case = input()

clist = [list(map(int, input().split(' '))) for _ in range(int(Case))]

def gcmf(a, b):
    mod = a % b
    while(mod > 0):
        a = b
        b = mod
        mod = a % b
    return b

for M, N, x, y in clist:
    maxv = max(M, N)
    minv = min(M, N)
    gcm = gcmf(maxv, minv)
    lcm = M * N // gcm
    
    cnt = x % (M + 1)
    tempY = x
    
    for _ in range(N):
        ty = N if tempY % N == 0 else tempY % N
        if(ty == y):
            break
            
        tempY = ty + M
        cnt += M
        
    print(-1 if (cnt > lcm) else cnt)

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 2751번(python)  (0) 2019.05.29
백준 2750번(python)  (0) 2019.05.29
백준 1475번(python)  (0) 2019.05.28
백준 2775번(python)  (0) 2019.05.27
백준 10250번(python)  (0) 2019.05.27