#include using namespace std; long long gcd_ext(long long a, long long b, long long &x, long long &y) { if (b == 0) { x = 1; y = 0; return a; } else { long long d = gcd_ext(b, a % b, y, x); y -= a / b * x; return d; } } long long inverse(long long a, long long P) { // aの逆元を求める long long x, y; gcd_ext(a, P, x, y); return (P + x % P) % P; } long long f(long long a, long long b, long long mod){ long long inva = inverse(a, mod); cerr << b << " " << inva << " " << mod << " " << a*inva%mod << endl; return (b*inva)%mod; } void solve(){ long long n, m; cin >> n >> m; long long mod = 1000000000; n %= mod; m = (mod - m%mod)%mod; long long g = __gcd(n, __gcd(m, mod)); if((n == 0 && m != 0) || __gcd(n/g, mod/g) != 1){ cout << -1 << endl; return; } n /= g; mod /= g; cerr << n << " " << m << " " << mod << endl; cout << f(n, m, mod) << endl; return; } int main(){ int t; cin >> t; while(t--){ solve(); } }