#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<iomanip>
 
using namespace std;
 
typedef long long ll;
 
//e_gcd()自体はaとbの最大公約数を返す。
//xとyは、a*x+b*y=gcd(a,b)となる(x,y)の1つの組を返す。
//a*x+b*y=gcdの時、a=b*p+(a%b)を代入して、b*p*x+(a%b)*x+b*y=b*(p*x+y)+(a%b)*x
//次のx->p*x+y
//次のy->x
//次のa->b
//次のb->a%b
ll e_gcd(ll a, ll b, ll& x, ll& y)
{
	if (b == 0)
	{
		x = 1;
		y = 0;
		return a;
	}
	ll gcd_res = e_gcd(b, a % b, x, y);
	ll p = a / b;
	ll nx = x, ny = y;
	x = ny;
	y = nx - p * x;
	return gcd_res;
}
 
ll lcm(ll a, ll b) {
	ll t1, t2;
	ll gcd = e_gcd(a, b, t1, t2);
	return a * b / gcd;
}
 
ll T;
 
int main() {
 
	cin >> T;
	while (T--) {
		ll X, Y, P, Q;
		cin >> X >> Y >> P >> Q;
 
		ll ans = 4 * 1000000000000000000LL;//INFの値はこうする。
 
		for (ll A = X; A < X + Y; A++) {
			for (ll B = P; B < P + Q; B++) {
				ll p, q;
				//p * (2X + 2Y) - q * (P + Q) = gcd(2X + 2Y, P + Q)となる(p, q)を求める。
				ll gcd = e_gcd(2 * (X + Y), (P + Q), p, q);
 
				if ((B - A) % gcd != 0)continue;//このB - Aでは解がない場合
 
				//(p, q)はただの解のセットで、別にpが正などと約束されてるわけではない。
				//よって、まずは適切にあまりを取って0に近づけて、そこから必要な符号に直す。
 
				//gcd倍の係数をかける。
				p *= (B - A) / gcd;
 
				p %= (P + Q) / gcd;
				if (p < 0)p += (P + Q) / gcd;
 
				ll t = A + p * 2 * (X + Y);
				ans = min(ans, t);
			}
		}
		if (ans == 4 * 1000000000000000000LL)
			cout << "infinity" << endl;
		else 
			cout << ans << endl;
	}
	return 0;
}
/*  -*- coding: utf-8 -*-
 *
 * a.cc: A - Fourtune Cookies
 */

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
 
using namespace std;

/* constant */

const int N = 4;
const int NBITS = 1 << N;

/* typedef */

/* global variables */

int as[N];

/* subroutines */

/* main */

int main() {
  int sum = 0;
  for (int i = 0; i < N; i++) {
    scanf("%d", as + i);
    sum += as[i];
  }

  for (int bits = 0; bits < NBITS; bits++) {
    int bs = 0;
    for (int i = 0, bi = 1; i < N; i++, bi <<= 1)
      if (bits & bi) bs += as[i];
    if (bs * 2 == sum) {
      puts("Yes");
      return 0;
    }
  }

  puts("No");
  return 0;
}
