- #include
- #include
-
- using namespace std;
-
- typedef long long ll;
-
- inline long long read()
- {
- long long s=0,f=1;
- char ch=getchar();
- while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
- while(isdigit(ch)) {s=s*10+ch-'0'; ch=getchar(); }
- return s*f;
- }//快读
- inline void write(long long x)
- {
- if(x<0) {putchar('-');x=-x;}
- if(x>9) write(x/10);
- putchar(x%10+'0');
- return;
- }//快写
-
- void exgcd(ll a,ll b,ll &x,ll &y)
- {
- if(b==0)
- {
- x=1;
- y=0;
- return ;
- }
- exgcd(b,a%b,x,y);
- ll temp=x;
- x=y;
- y=temp-a/b*y;
- }
- ll gcd(ll a,ll b)
- {
- return b==0?a:gcd(b,a%b);
- }
-
- int main(){
- int t;
- cin>>t;
- while(t--){
- ll a,b,c,x,y;
- a=read();
- b=read();
- c=read();
- ll gcdd = gcd(a, b);
- if(c % gcdd != 0){
- puts("-1");
- continue;
- }
- a /= gcdd;
- b /= gcdd;
- c /= gcdd;//此时gcd(a, b) = 1
- exgcd(a, b, x, y);//求ax + by = 1的解
- x *= c;
- y *= c;//这样x,y就是ax + by = c 的解
- //以下都是对a(x + tb) + b(y - ta) = c的应用
- if(x <= 0){//如果x<=0那么求x的最小正整数值
- ll t = abs(x) / b + 1;
- x = x % b + b;
- y -= t * a;
- if(y <= 0)//x是最小正整数解,y<=0,说明有整数解没有正整数解,输出x的最小正整数值,y的最小正整数值。
- {
- write(x);
- printf(" ");
- y = y % a + a;
- write(y);
- printf("\n");
- continue;
- }
- }
- if(y <= 0){//同上
- ll t = abs(y) / a + 1;
- y = y % a + a;
- x -= t * b;
- if(x <= 0){
- x = x % b + b;
- write(x);
- printf(" ");
- write(y);
- printf("\n");
- continue;
- }
- }
-
- ll maxx, minx, maxy, miny, p, q;
-
- p = x / b;//计算x的最小值,同时y取最大值
- x %= b;
- if(!x) x += b,p--;
- y += p * a;
- minx = x;
- maxy = y;
-
- q = y/a;
- y %= a;
- if(!y) y+=a,q--;
- x += q * b;
- miny = y;
- maxx = x;
-
- printf("%d %d %d %d %d\n", (maxx - minx) / b + 1, minx, miny, maxx, maxy);
- }
- return 0;
- }
-