#include <bits/stdc++.h>
#pragma comment(linker, "/stack:64000000")
using namespace std;
template <typename first>
inline first abs(const first& a) {
  return a < 0 ? -a : a;
}
template <typename first>
inline first sqr(const first& a) {
  return a * a;
}
const long double PI = 3.1415926535897932384626433832795;
const long double EPS = 1e-9;
const int INF = 1000 * 1000 * 1000;
long long a, b, c;
long long gcdExt(long long a, long long b, long long& x, long long& y) {
  if (a == 0) {
    x = 0, y = 1;
    return b;
  }
  long long tx, ty;
  long long g = gcdExt(b % a, a, tx, ty);
  x = ty - tx * (b / a);
  y = tx;
  return g;
}
long long gcd(long long a, long long b) { return a == 0 ? b : gcd(b % a, a); }
int main() {
  cin >> a >> b >> c;
  if (a == 0) {
    if (c % b != 0)
      puts("-1");
    else
      cout << 0 << ' ' << -c / b << endl;
    return 0;
  }
  if (b == 0) {
    if (c % a != 0)
      puts("-1");
    else
      cout << -c / a << ' ' << 0 << endl;
    return 0;
  }
  long long g = gcd(a, b);
  if (c % g != 0) {
    cout << -1 << endl;
    return 0;
  }
  long long x, y;
  gcdExt(a, b, x, y);
  x *= -c / g;
  y *= -c / g;
  assert(a * x + b * y + c == 0);
  cout << x << ' ' << y << endl;
  return 0;
}

### Prompt

Please formulate a cpp solution to the following 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

### Response

```cpp
#include <bits/stdc++.h>
#pragma comment(linker, "/stack:64000000")
using namespace std;
template <typename first>
inline first abs(const first& a) {
  return a < 0 ? -a : a;
}
template <typename first>
inline first sqr(const first& a) {
  return a * a;
}
const long double PI = 3.1415926535897932384626433832795;
const long double EPS = 1e-9;
const int INF = 1000 * 1000 * 1000;
long long a, b, c;
long long gcdExt(long long a, long long b, long long& x, long long& y) {
  if (a == 0) {
    x = 0, y = 1;
    return b;
  }
  long long tx, ty;
  long long g = gcdExt(b % a, a, tx, ty);
  x = ty - tx * (b / a);
  y = tx;
  return g;
}
long long gcd(long long a, long long b) { return a == 0 ? b : gcd(b % a, a); }
int main() {
  cin >> a >> b >> c;
  if (a == 0) {
    if (c % b != 0)
      puts("-1");
    else
      cout << 0 << ' ' << -c / b << endl;
    return 0;
  }
  if (b == 0) {
    if (c % a != 0)
      puts("-1");
    else
      cout << -c / a << ' ' << 0 << endl;
    return 0;
  }
  long long g = gcd(a, b);
  if (c % g != 0) {
    cout << -1 << endl;
    return 0;
  }
  long long x, y;
  gcdExt(a, b, x, y);
  x *= -c / g;
  y *= -c / g;
  assert(a * x + b * y + c == 0);
  cout << x << ' ' << y << endl;
  return 0;
}

```