#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:50000000")
using namespace std;
const long long mod = 1000000007;
const long long md = 1234567891;
const long long bil = 1000000000;
const char aa = 'a';
const double eps = 1E-9;
const int mil = 1000000;
const int ths = 1000;
const int maxn = 1001;
const int dr[] = {0, -1, 0, 1};
const int dc[] = {1, 0, -1, 0};
const int mxx = 32;
const int inf = (int)1E9;
template <typename T>
void printV(vector<T>& v) {
  for (int i = 0; i < (int)(v.size()); i++) cout << v[i] << " ";
  cout << endl;
}
template <typename T>
void printVs(vector<vector<T> >& v) {
  for (int i = 0; i < (int)(v.size()); i++) printV(v[i]);
}
int gcd(int m, int n) {
  if (m == 0 || n == 0) return m + n;
  return gcd(n, m % n);
}
pair<long long, long long> get(long long A, long long B) {
  if (A == 1) return make_pair((1LL), (0LL));
  if (B == 1) return make_pair((0LL), (1LL));
  long long x, y, k;
  if (A >= B) {
    k = A / B;
    pair<long long, long long> prv = get(A - k * B, B);
    x = prv.first;
    y = prv.second - k * prv.first;
  } else {
    k = B / A;
    pair<long long, long long> prv = get(A, B - k * A);
    x = prv.first - k * prv.second;
    y = prv.second;
  }
  return make_pair((x), (y));
}
int main() {
  int A, B, C;
  cin >> A >> B >> C;
  int d = gcd(abs(A), abs(B));
  long long x = 0, y = 0;
  if (C % d)
    cout << -1 << endl;
  else {
    C /= d;
    A /= d;
    B /= d;
    pair<long long, long long> sol = get(abs(A), abs(B));
    x = sol.first;
    y = sol.second;
    if (A != abs(A)) x = -x;
    if (B != abs(B)) y = -y;
    x *= -C;
    y *= -C;
    cout << x << " " << y << endl;
  }
}

### Prompt

Your challenge is to write 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:50000000")
using namespace std;
const long long mod = 1000000007;
const long long md = 1234567891;
const long long bil = 1000000000;
const char aa = 'a';
const double eps = 1E-9;
const int mil = 1000000;
const int ths = 1000;
const int maxn = 1001;
const int dr[] = {0, -1, 0, 1};
const int dc[] = {1, 0, -1, 0};
const int mxx = 32;
const int inf = (int)1E9;
template <typename T>
void printV(vector<T>& v) {
  for (int i = 0; i < (int)(v.size()); i++) cout << v[i] << " ";
  cout << endl;
}
template <typename T>
void printVs(vector<vector<T> >& v) {
  for (int i = 0; i < (int)(v.size()); i++) printV(v[i]);
}
int gcd(int m, int n) {
  if (m == 0 || n == 0) return m + n;
  return gcd(n, m % n);
}
pair<long long, long long> get(long long A, long long B) {
  if (A == 1) return make_pair((1LL), (0LL));
  if (B == 1) return make_pair((0LL), (1LL));
  long long x, y, k;
  if (A >= B) {
    k = A / B;
    pair<long long, long long> prv = get(A - k * B, B);
    x = prv.first;
    y = prv.second - k * prv.first;
  } else {
    k = B / A;
    pair<long long, long long> prv = get(A, B - k * A);
    x = prv.first - k * prv.second;
    y = prv.second;
  }
  return make_pair((x), (y));
}
int main() {
  int A, B, C;
  cin >> A >> B >> C;
  int d = gcd(abs(A), abs(B));
  long long x = 0, y = 0;
  if (C % d)
    cout << -1 << endl;
  else {
    C /= d;
    A /= d;
    B /= d;
    pair<long long, long long> sol = get(abs(A), abs(B));
    x = sol.first;
    y = sol.second;
    if (A != abs(A)) x = -x;
    if (B != abs(B)) y = -y;
    x *= -C;
    y *= -C;
    cout << x << " " << y << endl;
  }
}

```