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 java.math.*;

public class Main{
    class Par{
        BigInteger first, second;
        Par(BigInteger a, BigInteger b){
            first = a;
            second = b;
        }
    }
    
    Par mdc(BigInteger a, BigInteger b){
        if(b.compareTo(BigInteger.ZERO) == 0) return new Par(BigInteger.ONE, BigInteger.ZERO);
        Par rec = mdc(b, a.remainder(b));
        return new Par(rec.second, rec.first.subtract( (a.divide(b)).multiply(rec.second)));
    }
    
    BigInteger mdc2(BigInteger a, BigInteger b){
        if(b.compareTo(BigInteger.ZERO) == 0)
            return a;
        else return mdc2(b, a.remainder(b));
    }

    BigInteger faz(BigInteger non, BigInteger c){
        if(c.remainder(non).compareTo(BigInteger.ZERO) != 0) return null;
        return c.divide(non).multiply(new BigInteger("-1"));    
    }

    Par solve(BigInteger a, BigInteger b, BigInteger c){
        if(a.compareTo(BigInteger.ZERO) == 0){
            BigInteger resp = faz(b, c);
            if(resp != null) return new Par(BigInteger.ZERO, resp);
            return null;
        }else if(b.compareTo(BigInteger.ZERO) == 0){
            BigInteger resp = faz(a,c);
            if(resp != null) return new Par(resp, BigInteger.ZERO);
            return null;
        }
        BigInteger neg = new BigInteger("-1");
        BigInteger g = mdc2(a,b);
        if(c.remainder(g).compareTo(BigInteger.ZERO) != 0) return null;
        BigInteger r = c.divide(g);
        long tmp = (long)(1e18);
        BigInteger H = new BigInteger(5 + "").multiply(new BigInteger(tmp + ""));   
        Par par = mdc(a,b);
        BigInteger low = g.multiply(neg).multiply(  H.add( r.multiply(par.first) )   ).divide(  r.multiply(b) );
        BigInteger high = g.multiply(  H.subtract(  r.multiply(par.first)  ) ).divide( r.multiply(b)  );
        if(low.compareTo(high) > 0){
            BigInteger aux = low;
            low = high;
            high = aux;
        }
        
        BigInteger low2 = g.multiply(  r.multiply(par.second).subtract(H)   ).divide(r.multiply(a));
        BigInteger high2 = g.multiply( H.add( r.multiply(par.second) )  ).divide(r.multiply(a));
        
        if(low2.compareTo(high2) > 0){
            BigInteger aux = low2;
            low2 = high2;
            high2 = aux;
        }
        
            
        //System.out.println(g +  ">" + low + " " + low2 + " "  + high + " "  + high2);
        if(low.compareTo(low2) < 0) low = low2;
        if(high.compareTo(high2) > 0) high = high2;
    //  System.out.println(par.first + " " + par.second);
        if(low.compareTo(high) > 0) return null;
        BigInteger x = r.multiply(neg).multiply(  par.first.add(low.multiply(b.divide(g)))  );
        BigInteger y = r.multiply(neg).multiply(  par.second.subtract( low.multiply(a.divide(g)))  );
        return new Par(x, y);
    }
    
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        BigInteger a, b, c;
        a = sc.nextBigInteger();
        b = sc.nextBigInteger();
        c = sc.nextBigInteger();
        Main solver = new Main();
        
        Main.Par resp = solver.solve(a,b,c);
//      System.out.println(">>>> " + a.multiply(resp.first).add(b.multiply(resp.second)).add(c));
        if(resp != null) System.out.println(resp.first + " " + resp.second);
        else System.out.println("-1");
    //  long tmp = 5 * (long)(1e18);
//      BigInteger H = new BigInteger(tmp + "");
    //  BigInteger neg = new BigInteger("-1");
        //BigInteger soma = a.multiply(resp.first).add(b.multiply(resp.second)).add(c);
        //System.out.println(soma);
        //if(soma.compareTo(BigInteger.ZERO) != 0) throw new RuntimeException();
    //  System.out.println(">>> " + H.compareTo(resp.first) + " " + H.compareTo(resp.second) + " " + H.multiply(neg).compareTo(resp.first) + " " + H.multiply(neg).compareTo(resp.second) );
    }
    
}
//-333333333333333332 833333333333333333 333333333333333333 -833333333333333332