#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int64_t Euclid_EXT(int64_t a,int64_t b,int64_t* x,int64_t* y)
{
if(b==0)
{
*x=1;
*y=0;
return a;
}
int64_t x1,y1;
int64_t d=Euclid_EXT(b,a%b,&x1,&y1);
*x=y1;
*y=x1-(a/b)*y1;
return d;
}
int main(void)
{
FILE *fin=fopen("euclid3.in","r");
FILE *fout=fopen("euclid3.out","w");
if(fin==NULL || fout==NULL)
{
fprintf(stderr,"eroare la deschiderea fisierelor");
exit(EXIT_FAILURE);
}
int T;
if((fscanf(fin,"%d",&T))!=1)
{
fprintf(stderr,"eroare la citirea lui T");
exit(EXIT_FAILURE);
}
for(int i=0;i<T;i++)
{
int64_t a,b,c;
if(fscanf(fin,"%ld %ld %ld",&a,&b,&c)!=3)
{
fprintf(stderr,"eroare la citirea elementelor din fisier");
exit(EXIT_FAILURE);
}
int64_t x,y;
int64_t d=Euclid_EXT(a,b,&x,&y);
if(c%d)
{
fprintf(fout,"0 0 \n");
}
else
{
int64_t k=c/d;
x*=k;
y*=k;
fprintf(fout,"%ld %ld \n",x,y);
}
}
if((fclose(fin))!=0)
{
fprintf(stderr,"eroare la inchiderea fisierului de citire");
exit(EXIT_FAILURE);
}
if((fclose(fout))!=0)
{
fprintf(stderr,"eroare la inchiderea fisierului de scriere");
exit(EXIT_FAILURE);
}
return 0;
}