#include <bits/stdc++.h>
using namespace std;
#define int long long
struct State {
int x, y;
int dx, dy;
};
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int n, m, x, y;
cin >> n >> m >> x >> y;
vector<bool> row(n + 1, false);
vector<bool> col(m + 1, false);
int cntRow = 0;
int cntCol = 0;
State cur = {x, y, 1, 1};
int time = 0;
while (true) {
// lau hàng và cột hiện tại
if (!row[cur.x]) {
row[cur.x] = true;
cntRow++;
}
if (!col[cur.y]) {
col[cur.y] = true;
cntCol++;
}
// đã lau hết
if (cntRow == n || cntCol == m) {
cout << time << '\n';
break;
}
// phản xạ theo hàng
if (cur.x + cur.dx < 1 || cur.x + cur.dx > n)
cur.dx *= -1;
// phản xạ theo cột
if (cur.y + cur.dy < 1 || cur.y + cur.dy > m)
cur.dy *= -1;
// di chuyển
cur.x += cur.dx;
cur.y += cur.dy;
time++;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKCnN0cnVjdCBTdGF0ZSB7CiAgICBpbnQgeCwgeTsKICAgIGludCBkeCwgZHk7Cn07CgpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IFQ7CiAgICBjaW4gPj4gVDsKCiAgICB3aGlsZSAoVC0tKSB7CiAgICAgICAgaW50IG4sIG0sIHgsIHk7CiAgICAgICAgY2luID4+IG4gPj4gbSA+PiB4ID4+IHk7CgogICAgICAgIHZlY3Rvcjxib29sPiByb3cobiArIDEsIGZhbHNlKTsKICAgICAgICB2ZWN0b3I8Ym9vbD4gY29sKG0gKyAxLCBmYWxzZSk7CgogICAgICAgIGludCBjbnRSb3cgPSAwOwogICAgICAgIGludCBjbnRDb2wgPSAwOwoKICAgICAgICBTdGF0ZSBjdXIgPSB7eCwgeSwgMSwgMX07CgogICAgICAgIGludCB0aW1lID0gMDsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKCiAgICAgICAgICAgIC8vIGxhdSBow6BuZyB2w6AgY+G7mXQgaGnhu4duIHThuqFpCiAgICAgICAgICAgIGlmICghcm93W2N1ci54XSkgewogICAgICAgICAgICAgICAgcm93W2N1ci54XSA9IHRydWU7CiAgICAgICAgICAgICAgICBjbnRSb3crKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFjb2xbY3VyLnldKSB7CiAgICAgICAgICAgICAgICBjb2xbY3VyLnldID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGNudENvbCsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDEkcOjIGxhdSBo4bq/dAogICAgICAgICAgICBpZiAoY250Um93ID09IG4gfHwgY250Q29sID09IG0pIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgdGltZSA8PCAnXG4nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHBo4bqjbiB44bqhIHRoZW8gaMOgbmcKICAgICAgICAgICAgaWYgKGN1ci54ICsgY3VyLmR4IDwgMSB8fCBjdXIueCArIGN1ci5keCA+IG4pCiAgICAgICAgICAgICAgICBjdXIuZHggKj0gLTE7CgogICAgICAgICAgICAvLyBwaOG6o24geOG6oSB0aGVvIGPhu5l0CiAgICAgICAgICAgIGlmIChjdXIueSArIGN1ci5keSA8IDEgfHwgY3VyLnkgKyBjdXIuZHkgPiBtKQogICAgICAgICAgICAgICAgY3VyLmR5ICo9IC0xOwoKICAgICAgICAgICAgLy8gZGkgY2h1eeG7g24KICAgICAgICAgICAgY3VyLnggKz0gY3VyLmR4OwogICAgICAgICAgICBjdXIueSArPSBjdXIuZHk7CgogICAgICAgICAgICB0aW1lKys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9