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.*;
import java.util.*;
public final class code
// class code
// public class Solution
{
static void solve()throws IOException
{
    int a=nextInt();
    int b=nextInt();
    int c=-nextInt();
    if(c==0)
    {
         out.println(0+" "+0);
         return;
    }
    if(a==0)
    {
         if(Math.abs(c)%Math.abs(b)==0)
          out.println(0+" "+c/b);
          else
          out.println(-1);
          return;
    }
    if(b==0)
    {
         if(Math.abs(c)%Math.abs(a)==0)
          out.println(c/a+" "+0);
          else
          out.println(-1);
          return;
    }
    int g=gcd(Math.abs(a),Math.abs(b));
//    debug(g);
    if(Math.abs(c)%g!=0)
     {
          out.println(-1);
          return;
     }
     Pair sol=solution(Math.abs(a),Math.abs(b));
     long x=sol.first;
     long y=sol.second;
     // debug(x,y);
     if(a<0)
          x=-x;
     if(b<0)
          y=-y;
     // debug(c/g);
     long x1=1l*c/g*x;
     long y1=1l*c/g*y;
     out.println(x1+" "+y1);
}
static int gcd(int a,int b)
{
     if(a==0)
     return b;
     else
     return gcd(b%a,a);
}
static Pair solution(int a,int b)
{
     if(a==0)
          return new Pair(0,1);
     Pair p=solution(b%a,a);
     return new Pair(p.second-b/a*p.first,p.first);
}
///////////////////////////////////////////////////////////
public static void main(String args[])throws IOException
{
br=new BufferedReader(new InputStreamReader(System.in));
out=new PrintWriter(new BufferedOutputStream(System.out));
random=new Random();

solve();

// int t=nextInt();
// for(int i=1;i<=t;i++)
// {
// // out.print("Case #"+i+": ");
// solve();
// }

out.close();
}

static final long mod=(long)(1e9+7);
static final int inf=(int)(1e9+1);
// static final long inf=(long)(1e18);

static class Pair implements Comparable<Pair>
{
    long first,second;
    Pair(long a,long b)
    {
        first=a;
        second=b;
    }
    public int compareTo(Pair p)
    {
        return first>p.first?1:-1;
    }
}

static int max(int ... a)
{
int ret=a[0];
for(int i=1;i<a.length;i++)
ret=Math.max(ret,a[i]);
return ret;
}
static int min(int ... a)
{
int ret=a[0];
for(int i=1;i<a.length;i++)
ret=Math.min(ret,a[i]);
return ret;
}
static void debug(Object ... a)
{
System.out.print("> ");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
System.out.println();
}
static void debug(int a[]){debuga(Arrays.stream(a).boxed().toArray());}
static void debug(long a[]){debuga(Arrays.stream(a).boxed().toArray());}
static void debuga(Object a[])
{
System.out.print("> ");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
System.out.println();
}
static Random random;
static BufferedReader br;
static StringTokenizer st;
static PrintWriter out;
static String nextToken()throws IOException
{
while(st==null || !st.hasMoreTokens())
st=new StringTokenizer(br.readLine());
return st.nextToken();
}
static String nextLine()throws IOException
{
return br.readLine();
}
static int nextInt()throws IOException
{
return Integer.parseInt(nextToken());
}
static long nextLong()throws IOException
{
return Long.parseLong(nextToken());
}
static double nextDouble()throws IOException
{
return Double.parseDouble(nextToken());
}
}