#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0);
const double eps = 1e-9;
inline int comp(const double &a, const double &b) {
  if (fabs(a - b) < eps) return 0;
  return a > b ? 1 : -1;
}
int di[] = {1, -1, 0, 0, 1, -1, 1, -1};
int dj[] = {0, 0, 1, -1, 1, -1, -1, 1};
int diK[] = {-2, -2, -1, 1, 2, 2, 1, -1};
int djK[] = {-1, 1, 2, 2, 1, -1, -2, -2};
int I, J;
inline bool val(const int &i, const int &j) {
  if (i < 0 || j < 0 || i >= I || j >= J) return false;
  return true;
}
long long eGCD(long long a, long long b, long long &x, long long &y) {
  x = 1;
  y = 0;
  long long nx = 0, ny = 1;
  long long t, r;
  while (b) {
    r = a / b;
    t = a - r * b;
    a = b;
    b = t;
    t = x - r * nx;
    x = nx;
    nx = t;
    t = y - r * ny;
    y = ny;
    ny = t;
  }
  return a;
}
bool solveLDE(long long a, long long b, long long c, long long &x, long long &y,
              long long &g) {
  g = eGCD(a, b, x, y);
  x *= c / g;
  y *= c / g;
  return (c % g) == 0;
}
int main() {
  long long a, b, c, x, y, g;
  cin >> a >> b >> c;
  if (solveLDE(a, b, -c, x, y, g))
    cout << x << " " << y << endl;
  else
    cout << -1 << endl;
  return 0;
}

### Prompt

Please create a solution in Cpp 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>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0);
const double eps = 1e-9;
inline int comp(const double &a, const double &b) {
  if (fabs(a - b) < eps) return 0;
  return a > b ? 1 : -1;
}
int di[] = {1, -1, 0, 0, 1, -1, 1, -1};
int dj[] = {0, 0, 1, -1, 1, -1, -1, 1};
int diK[] = {-2, -2, -1, 1, 2, 2, 1, -1};
int djK[] = {-1, 1, 2, 2, 1, -1, -2, -2};
int I, J;
inline bool val(const int &i, const int &j) {
  if (i < 0 || j < 0 || i >= I || j >= J) return false;
  return true;
}
long long eGCD(long long a, long long b, long long &x, long long &y) {
  x = 1;
  y = 0;
  long long nx = 0, ny = 1;
  long long t, r;
  while (b) {
    r = a / b;
    t = a - r * b;
    a = b;
    b = t;
    t = x - r * nx;
    x = nx;
    nx = t;
    t = y - r * ny;
    y = ny;
    ny = t;
  }
  return a;
}
bool solveLDE(long long a, long long b, long long c, long long &x, long long &y,
              long long &g) {
  g = eGCD(a, b, x, y);
  x *= c / g;
  y *= c / g;
  return (c % g) == 0;
}
int main() {
  long long a, b, c, x, y, g;
  cin >> a >> b >> c;
  if (solveLDE(a, b, -c, x, y, g))
    cout << x << " " << y << endl;
  else
    cout << -1 << endl;
  return 0;
}

```