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

public class MainC {

    FastScanner in;
    PrintWriter out;

    long[] x = new long[100];
    long[] y = new long[100];
    int c;

    public void solve() throws IOException {
        int A = in.nextInt();
        int B = in.nextInt();
        int C = in.nextInt();

        if (A == 0) {
            if (C % B == 0) {
                out.println(0 + " " + (-C / B));
            }
            else {
                out.println(-1);
            }
            return;
        }
        if (B == 0) {

            if (C % A == 0) {
                out.println((-C / A) + " " + 0);
            }
            else {
                out.println(-1);
            }
            return;
        }
        long kx;
        long ky;

        int AA = A;
        int BB = B;
        if (AA < 0) {
            AA = -AA;
        }
        if (BB < 0) {
            BB = -BB;
        }
        if (AA < BB) {
            int t = AA;
            AA = BB;
            BB = t;
        }
        int d = nod(AA, BB, 0);
        if (d == BB) {
            kx = 1;
            ky = 1 - AA / BB;
        }
        else {
            c--;
            kx = x[c];
            ky = y[c];
        }

        if (Math.abs(A) < Math.abs(B)) {
            long t = kx;
            kx = ky;
            ky = t;
        }

        if (A < 0) {
            kx = -kx;
        }
        if (B < 0) {
            ky = -ky;
        }

        if (C % d == 0) {
            C = C / d;
        }
        else {
            out.println(-1);
            return;
        }

        long x = kx;
        long y = ky;
        x = -x * C;
        y = -y * C;
        out.println(x + " " + y);

    }

    int nod(int a, int b, int n) {
        int q = a / b;
        int r = a % b;
        if (n == 0) {
            x[0] = 1;
            y[0] = -q;
        }
        else if (n == 1) {
            x[1] = -q;
            y[1] = 1L - y[0] * q;
        }
        else {
            x[n] = x[n - 2] - x[n - 1] * q;
            y[n] = y[n - 2] - y[n - 1] * q;
        }
        c = n;
        if (r == 0) {
            return b;
        }
        return nod(b, r, n + 1);
    }

    public void run() {
        try {
            in = new FastScanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    class FastScanner {

        BufferedReader br;
        StringTokenizer st;

        FastScanner(InputStream is) {
            br = new BufferedReader(new InputStreamReader(is));
        }

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

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

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

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

    public static void main(String[] arg) {
        new MainC().run();
    }
}