#include <bits/stdc++.h> using namespace std; #define ll long long #define NN 100011 #define SS 48000 ll Xt, Yt; bool pr[SS+1]; void init() { for (int i = 2; i <= SS; i++) pr[i] = true; for (int i = 2; i*i <= SS; i++) { if (pr[i]) { for (int j = i*i; j <= SS; j += i) { pr[j] = false; } } } } ll x, y; ll egcd(ll a, ll b) { if (b == 0) { x = 1; y = 0; return a; } else { ll g = egcd(b, a % b); ll t = x - (a / b) * y; x = y; y = t; return g; } } ll ps[NN+1][41]; int es[NN+1][41]; int pc[NN+1]; ll vs[NN+1]; ll ds[NN+1]; int facs(int n) { int dc = 1; ds[0] = 1; for (int i = 0; i < pc[n]; i++) { ll p = ps[n][i]; int odc = dc; for (int ct = es[n][i]*odc; ct--;) { ll d = ds[dc-odc] * p; ds[dc++] = d; } } return dc; } void solve() { Xt = Yt = 0; ll A, B, C, N; scanf("%lld%lld%lld%lld", &A, &B, &C, &N); ll P = A+B; ll Q = A*B + C; ll S = int(sqrt(P*N+Q)+5); for (int n = 0; n <= N; n++) { pc[n] = 0; vs[n] = P*n+Q; } for (int i = 2; i <= S; i++) { if (pr[i]) { ll g = egcd(P,i); if (Q % g == 0) { ll step = i/g; ll start = (Q/g*-x) % step; if (start < 0) start += step; for (int n = start; n <= N; n += step) { int e = 0; while (vs[n] % i == 0) { e++; vs[n] /= i; } ps[n][pc[n]] = i; es[n][pc[n]] = e; pc[n]++; } } } } for (int n = 0; n <= N; n++) { if (vs[n] > 1) { ps[n][pc[n]] = vs[n]; es[n][pc[n]] = 1; pc[n]++; } } for (int n = 0; n <= N; n++) { ll V = P*n+Q; int dc = facs(n); if (N-n-A <= 0) continue; ll lbd = (V-1)/(N-n-A); ll ubd = N-n-B; for (int i = 0; i < dc; i++) { ll x = ds[i]; ll a = x+B; if ((a&n) == 0) { a |= n; ll b = V/x+A; if ((a&b) == 0) { if (lbd < x && x <= ubd) { Xt += a; Yt += b | n; } } } } } printf("%lld %lld\n", Xt, Yt); } int main() { init(); int z; scanf("%d", &z); while (z--) solve(); }