// A - 106
#include <bits/stdc++.h>
using namespace std;
using ll = int64_t;
#define rp(i,s,e) for(int i=(int)(s);i<(int)(e);++i)

int main(){
	ll n; cin>>n;
	ll na = 1;
	rp(a, 1, 38){
		na *= 3;
		ll nb = 1;
		rp(b, 1, 26){
			nb *= 5;
			if(n == na+nb){
				cout<< a <<" "<< b <<endl;
				return 0;
			}
		}
	}
	puts("-1");
}

#include <bits/stdc++.h>
using namespace std;
#ifdef __DEBUG__
    void debug_out() { cerr << endl; } 
    template <typename Head, typename... Tail>
    void debug_out(Head H, Tail... T) {cerr << " " << H; debug_out(T...);}
    #define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
    #define debug(...) 
#endif

using ll = long long int;
using ull = unsigned long long int;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

int dx[]={1, 0, -1, 0, 1,-1, 1,-1};
int dy[]={0, 1, 0, -1, 1, 1,-1,-1};
const int INT_INF = (int)(2e9);
const ll  LL_INF = (ll)(2e18);

inline void fast_io() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); };
template<typename T, typename S> inline ostream& operator<<(ostream& os, const pair<T, S> p) { cout << "[" << p.first << ";" << p.second << "]"; return os; }
template<typename T, typename S> inline ostream& operator<<(ostream& os, const map<T, S> p) { for (auto el : p) cout << "[" << el.first << ";" << el.second << "]"; return os; }
template<typename T> inline ostream& operator<<(ostream& os, const vector<T>& v) { for (auto el : v) cout << el << " "; return os; }
template<typename T> inline ostream& operator<<(ostream& os, const deque<T>& v) { for (auto el : v) cout << el << " "; return os; }
template<typename T> inline ostream& operator<<(ostream& os, const set<T>& v) { for (auto el : v) cout << el << " "; return os; }
template<typename T> inline vector<T> fetch_vec(int sz) { vector<T> ret(sz); for (auto& elem : ret) cin >> elem; return ret; }

ll N;
inline void input(){
    fast_io();
    cin >> N;
}

inline int solve(){
    if(N%2){
        cout << -1 << endl;
        return 0;
    }
    ll a3 = 3;
    ll a = 1;
    while(a3 < N && a3 < 1e18){
        ll b5 = 5;
        ll b = 1;
        while(b5 < N && b5 < 1e18){
            if(a3 + b5 == N){
                cout << a << " " << b << endl;
                return 0; 
            }
            b5 *= 5;
            b++;
        }


        a3 *= 3;
        a++;

    }
    cout << -1 << endl;

    return 0;
}   

int main()
{
    input();
    solve();
    return 0;
}
