#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
//este cumva o varianta mai generala a inversului modular, aici dupa egal nu o sa mai fie 1, o sa fie o necunoscuta 'c'
long long euclid_extins(long long a, long long b, long long *x, long long *y)
{
if (b == 0){ // in cazul asta avem a * 1 + 0 = c
*x = 1;
*y = 0;
return a;
}
else{ //rotim a si b;
long long x0, y0, res;
res = euclid_extins(b, a % b, &x0, &y0);
*x = y0;
*y = x0 - (a / b) * y0;
return res;
}
}
int main(void)
{
FILE *fin = fopen("euclid3.in", "r");
FILE *fout = fopen("euclid3.out", "w");
long long T; // intre 1 si 100
fscanf(fin, "%lld", &T);
// scanf("%lld", &T);
// getchar();
for(uint16_t i = 0; i < T; i++)
{
long long a, b, c;
// scanf("%lld %lld %lld", &a, &b, &c);
// printf("a = %lld, b = %lld, c = %lld\n", a, b, c);
// getchar();
fscanf(fin, "%lld %lld %lld", &a, &b, &c);
long long x;
long long y;
long long res;
res = euclid_extins(a, b, &x, &y); //obtinem res si tratam in functie de inputul de lla c
// if (res < 0){ // ca sa nu avem probleme cu semnele negative
// res = -res;
// x = x;
// y = y;
// }
if (c % res){
// printf("0 0\n");
fprintf(fout, "0 0\n");
}
else{
// printf("%lld %lld\n", (x * (c / res)), (y * (c / res)));
fprintf(fout, "%lld %lld\n", (x * c / res), (y * c / res));
}
}
fclose(fin);
fclose(fout);
return 0;
}