#include using namespace std; using ll = long long; // a * x + b * y = v0 // c * x + d * y = v1 pair niziho(ll a, ll b, ll v0, ll c, ll d, ll v1){ ll div = a * d - b * c; if(div == 0)return make_pair(-1, -1); ll num1 = v0 * d - b * v1; ll num2 = a * v1 - c * v0; if(num1 % div != 0 || num2 % div != 0)return make_pair(-1, -1); return make_pair(num1 / div, num2 / div); } int main(){ ios::sync_with_stdio(false); cin.tie(0); vector a(3); cin >> a[0] >> a[1] >> a[2]; vector> b(46); sort(a.begin(), a.end()); a.erase(unique(a.begin(), a.end()), a.end()); b[0] = {1, 0}; b[1] = {0, 1}; for(int i = 2; i < 46; i++){ b[i] = {b[i - 1].first + b[i - 2].first, b[i - 1].second + b[i - 2].second}; } pair ans = {1ll << 60, 1ll << 60}; if(a.size() == 3){ for(int i = 0; i < 46; i++){ for(int j = i; j < 46; j++){ auto p = niziho(b[i].first, b[i].second, a[0], b[j].first, b[j].second, a[1]); if(p.first <= 0 || p.second <= 0)continue; for(int k = j; k < 46; k++){ ll v = p.first * b[k].first + p.second * b[k].second; if(v > a[2])break; if(v == a[2]){ ans = min(ans, p); break; } } } } }else if(a.size() == 2){ ans = {a[0], a[1]}; for(int i = 0; i < 46; i++){ for(int j = i; j < 46; j++){ auto p = niziho(b[i].first, b[i].second, a[0], b[j].first, b[j].second, a[1]); if(p.first <= 0 || p.second <= 0)continue; ans = min(ans, p); } } }else if(a.size() == 1){ ans = {1, a[0]}; for(int i = 1; i < 46; i++){ ll v = a[0] - b[i].first; if(v <= 0)break; if(v % b[i].second == 0){ v /= b[i].second; ans = min(ans, make_pair(1ll, v)); } } } if(ans.first >> 60 & 1){ cout << -1 << '\n'; return 0; } cout << ans.first << " " << ans.second << '\n'; }