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:
/**
 * Created by IntelliJ IDEA.
 * User: aircube
 * Date: 11.01.11
 * Time: 4:14
 * To change this template use File | Settings | File Templates.
 */

import sun.nio.cs.ext.Big5;

import java.io.*;
import java.math.BigInteger;
import java.util.*;


public class Template {
    BufferedReader br;
    PrintWriter out;
    StringTokenizer st;

    public static void main(String[] args) throws IOException {
        new Template().run();
    }

    void run() throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        st = null;
        out = new PrintWriter(System.out);
        solve();
        br.close();
        out.close();
    }

    class GCDE {
        BigInteger x, y, g;

        boolean check(BigInteger a, BigInteger b) {
            return a.multiply(x) .add(b.multiply(y)).compareTo(g) == 0 ;
        }

        GCDE(BigInteger x, BigInteger y, BigInteger g) {
            this.x = x;
            this.y = y;
            this.g = g;
        }

        @Override
        public String toString() {
            return "GCDE{" +
                    "g=" + g +
                    ", y=" + y +
                    ", x=" + x +
                    '}';
        }
    }
    GCDE gcde(BigInteger a, BigInteger b) {
        if (a.compareTo(BigInteger.ZERO) == 0) {
            GCDE res = new GCDE(BigInteger.ZERO, BigInteger.ONE, b);
            return res ;
        } else {
            GCDE tmp = gcde(b.subtract(b.divide(a).multiply(a)), a);
            // (b - b / a * a)*x + a * y = g
            // (y - b / a * x) * a + b * x = g
            BigInteger x = tmp.y.subtract(b.divide(a).multiply(tmp.x));
            BigInteger y = tmp.x;
            return new GCDE(x, y, tmp.g);
        }
    }
    void solve() throws  IOException {
        BigInteger a = nextBigInteger(), b = nextBigInteger(), c = nextBigInteger() ;
        GCDE g = gcde(a, b) ;
        if (c.mod(g.g.abs()).compareTo(BigInteger.ZERO) != 0) {
            out.print(-1);
            return ;
        } else {
            //
            c =  BigInteger.ZERO.subtract(c);
            BigInteger cx = g.x.multiply(c).divide(g.g);
            BigInteger cy = g.y.multiply(c).divide(g.g);
            BigInteger dx = b.divide(g.g);
            BigInteger dy = a.divide(g.g);
            out.print(cx);
            out.print(" ");
            out.print(cy);
        }

    }

    int nextInt() throws IOException {
        return Integer.parseInt(nextToken());
    }

    double nextDouble() throws IOException {
        return Double.parseDouble(nextToken());
    }

    long nextLong() throws IOException {
        return Long.parseLong(nextToken());
    }
    BigInteger nextBigInteger() throws IOException {
        return new BigInteger(nextToken());
    }
    String nextToken() throws IOException {
        while (st == null || !st.hasMoreTokens()) {
            st = new StringTokenizer(br.readLine());
        }
        return st.nextToken();
    }
}