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 CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-5;
long long gcd(long long a, long long b) {
  long long c;
  while (b != 0) {
    c = a % b;
    a = b;
    b = c;
  }
  return a;
}
int main(void) {
  long long A, B, C;
  cin >> A;
  cin >> B;
  cin >> C;
  long long x, y;
  if (A == 0) {
    if ((-C) % B == 0) {
      x = 0;
      y = (-C) / B;
      cout << x << ' ' << y;
    } else
      cout << -1;
  } else if (B == 0) {
    if ((-C) % A == 0) {
      x = (-C) / A;
      y = 0;
      cout << x << ' ' << y;
    } else
      cout << -1;
  } else {
    if (C == 0) {
      cout << 0 << ' ' << 0;
      return 0;
    }
    long long aA = A;
    long long aB = B;
    if (aA < 0) aA = -A;
    if (aB < 0) aB = -B;
    long long g = gcd(aA, aB);
    if ((C % g) != 0) {
      cout << -1;
      return 0;
    }
    A = A / g;
    B = B / g;
    C = C / g;
    aA = aA / g;
    aB = aB / g;
    int flag = 0;
    if (aB > aA) {
      swap(aA, aB);
      flag = 1;
    }
    long long m = aA % aB;
    long long d = aA / aB;
    long long n = aB;
    long long xn, yn;
    long long xm, ym;
    if (m == 0) {
      if ((C % aB) == 0) {
        x = 0;
        y = -(C / aB);
        if (flag == 1) swap(x, y);
        if (A < 0) x = -x;
        if (B < 0) y = -y;
        cout << x << ' ' << y;
      } else
        cout << -1;
      return 0;
    }
    xn = 0;
    yn = 1;
    xm = 1;
    ym = -d;
    while (m > 1) {
      long long new_m = n % m;
      long long new_d = n / m;
      long long new_xm = xn + xm * (-new_d);
      long long new_ym = yn + ym * (-new_d);
      xn = xm;
      yn = ym;
      xm = new_xm;
      ym = new_ym;
      n = m;
      m = new_m;
    }
    if (flag == 1) swap(xm, ym);
    if (A < 0) xm = -xm;
    if (B < 0) ym = -ym;
    xm = xm * (-C);
    ym = ym * (-C);
    cout << xm << ' ' << ym;
  }
  return 0;
}