Problem: A line on the plane is described by an equation Ax + By + C = 0. You are to find any point on this line, whose coordinates are integer numbers from  - 5·1018 to 5·1018 inclusive, or to find out that such points do not exist.

Input

The first line contains three integers A, B and C ( - 2·109 ≤ A, B, C ≤ 2·109) — corresponding coefficients of the line equation. It is guaranteed that A2 + B2 > 0.

Output

If the required point exists, output its coordinates, otherwise output -1.

Examples

Input

2 5 3


Output

6 -3

Solution (in JAVA):

Solution:
import java.util.*;
import static java.lang.Math.*;

public class C {
	static void p(Object...o){System.out.println(Arrays.deepToString(o));}
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		long A = sc.nextLong();
		long B = sc.nextLong();
		long C = sc.nextLong();
		if(A == 0){
			long y = -C/B;
			if(y*B+C == 0)
				System.out.println(0+" "+y);
			else
				System.out.println(-1);
		}else if(B == 0){
			long x = -C/A;
			if(x*A+C == 0)
				System.out.println(x+" "+0);
			else
				System.out.println(-1);
		}else{
			C *= -1;
			long gcd = gcd(A,B);

			if(abs(C)%gcd == 0){
				long lcm = (A/gcd)*B;
				long dx = lcm/A;
				long dy = -lcm/B;
				if(dx < 0){
					dx *= -1;
					dy *= -1;
				}
				long[] L = egcd(A,B);
				long x = L[0]*((C)/gcd);
				long y = L[1]*((C)/gcd);
				//			p(A*x+B*y,C);
				long lowx = -abs(x-low)/dx;
				long highx = abs(high-x)/dx;
				long lowy,highy;
				if(dy > 0){
					lowy = -abs(y-low)/dy;
					highy = abs(high-y)/dy;
				}else{
					lowy = -abs(high-y)/abs(dy);
					highy = abs(y-low)/abs(dy);
				}
				boolean found = false;
				long ax=0,ay=0;
				if(lowx <= lowy && lowy <= highx){
					found = true;
					ax = x+dx*lowy;
					ay = y+dy*lowy;
				}
				if(lowx <= highy && highy <= highx){
					found = true;
					ax = x+dx*highy;
					ay = y+dy*highy;
				}
				if(lowy <= lowx && lowx <= highy){
					found = true;
					ax = x+dx*lowx;
					ay = y+dy*lowx;
				}
				if(lowy <= highx && highx <= highy){
					found = true;
					ax = x+dx*highx;
					ay = y+dy*highx;
				}
				//			p(x,y,dx,dy);
				//			p(lowx,highx,lowy,highy);
				//			p(ax*A+ay*B,C);
				//			p(low <= ax,ax <= high,low <= ay,ay<=high);
				if(found)
					System.out.println(ax+" "+ay);
				else
					System.out.println(-1);
			}else{
				System.out.println(-1);
			}
		}
	}
	static long low = -5000000000000000000L;
	static long high = 5000000000000000000L;
	public static long gcd(long a, long b)
	{
		if(b ==0)
			return a;
		return gcd(b,a%b);
	}
	public static long[] egcd(long a, long b){
		if( a %b == 0)
			return new long[]{0, 1};
		else{
			long[] l = egcd(b, a % b);
			return new long[]{l[1], l[0]-l[1]*(a/b)};
		}
	}
}