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.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws FileNotFoundException, IOException {
		InputReader in = new InputReader(System.in);
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		TaskB solver = new TaskB();
		solver.solve(1, in, out);
		out.flush();
		out.close();

	}
}

class Pair implements Comparable<Pair> {
	long cost;
	int idx;

	Pair(long cost, int second) {
		this.cost = cost;
		idx = second;
	}

	@Override
	public int compareTo(Pair e) {
		if (this.cost != e.cost) {
			return Long.compare(this.cost, e.cost);
		} else {
			return Integer.compare(this.idx, e.idx);
		}
	}
}

// pair problem can be done using stack
class TaskB {
	int MAXN = (int) 1e9 + 7;

	void solve(int testNumber, InputReader in, PrintWriter pw) {
		long a = in.nextInt();
		long b = in.nextInt();
		long c = in.nextInt();
		long x = a;
		long y = b;
		long xp = 1;
		long xq = 0;
		long yp = 0;
		long yq = 1;
		if (x < 0) {
			x = -x;
			xp = -1;
		}
		if (y < 0) {
			y = -y;
			yq = -1;
		}
		while (y > 0) {
			long by = x / y;
			long t = x - by * y;
			long tp = xp - by * yp;
			long tq = xq - by * yq;
			x = y;
			xp = yp;
			xq = yq;
			y = t;
			yp = tp;
			yq = tq;
			System.err.println(x + " " + y + " " + " " + tp + " " + tq + " " + xp + " " + xq + " " + yp + " " + yq);
		}
		System.err.println(xp + " " + xq);
		if (c % x != 0) {
			pw.println(-1);
		} else {
			long p = xp;
			long q = xq;
			long z;
			if (b == 0) {
				z = -q / a;
			} else {
				z = p / b;
			}
//			p -= z * b;
//			q += z * a;
			p *= -c / x;
			q *= -c / x;
			pw.println(p + " " + q);
		}
	}

	long pow(int n, int m) {
		if (m == 0)
			return 1;
		long ans = pow(n, m / 2);
		ans = (ans * ans);
		if (m % 2 == 1) {
			ans = (ans * n);
		}
		return ans;
	}

	double pow(double n, int m) {
		if (m == 0)
			return 1;
		double ans = pow(n, m / 2);
		ans = (ans * ans);
		if (m % 2 == 1) {
			ans = (ans * n);
		}
		return ans;
	}
}

class InputReader {
	BufferedReader br;
	StringTokenizer st;

	public InputReader(InputStream in) {
		br = new BufferedReader(new InputStreamReader(in));
		st = null;
	}

	public String next() {
		while (st == null || !st.hasMoreTokens()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException e) {
				throw new RuntimeException(e);
			}
		}
		return st.nextToken();
	}

	public int nextInt() {
		return Integer.parseInt(next());
	}

	public long nextLong() {
		return Long.parseLong(next());
	}

	public double nextDouble() {
		return Double.parseDouble(next());
	}
}