#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();
}