#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
struct c
{
long long cube_m, cube_n;
c(long long cube_m, long long cube_n)
{
this->cube_m = cube_m;
this->cube_n = cube_n;
}
};
int main()
{
vector<c>cube;
long long n = 10000, i, j, p, q, different, p1, q1,pola,min1,sum;
for (i = 1; i*i*i <= n; i = i + 1)
{
cube.push_back(c(i, i*i*i));
}
while(scanf("%lld",&pola)!=EOF)
{
min1=1000000;
p1=1;q1=1;
if(pola==0)
break;
for(i=0;i<cube.size();i++)
{
for(j=0+1+i;j<cube.size();j++)
{
different=cube[i].cube_n-cube[j].cube_n;
if(different<0)
different=different*(-1);
if(different>pola)
break;
if(different==pola)
{
p=cube[i].cube_m;
q=cube[j].cube_m;
if(q<min1)
{
min1=q;
p1=p;
q1=q;
}
break;
}
}
}
if(p1==1&q1==1)
cout<<"No solution\n";
else if(p1>q1)
cout<<p1<<" "<<q1<<"\n";
else if(p1<q1)
cout<<q1<<" "<<p1<<"\n";
}
}
ICAgI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgYwp7Cglsb25nIGxvbmcgY3ViZV9tLCBjdWJlX247CgljKGxvbmcgbG9uZyBjdWJlX20sIGxvbmcgbG9uZyBjdWJlX24pCgl7CgkJdGhpcy0+Y3ViZV9tID0gY3ViZV9tOwoJCXRoaXMtPmN1YmVfbiA9IGN1YmVfbjsKCX0KfTsKCmludCBtYWluKCkKewoJdmVjdG9yPGM+Y3ViZTsKCWxvbmcgbG9uZyBuID0gMTAwMDAsIGksIGosIHAsIHEsIGRpZmZlcmVudCwgcDEsIHExLHBvbGEsbWluMSxzdW07Cglmb3IgKGkgPSAxOyBpKmkqaSA8PSBuOyBpID0gaSArIDEpCgl7CgkJY3ViZS5wdXNoX2JhY2soYyhpLCBpKmkqaSkpOwoJfQoJCgl3aGlsZShzY2FuZigiJWxsZCIsJnBvbGEpIT1FT0YpCgl7CgkJbWluMT0xMDAwMDAwOwoJCXAxPTE7cTE9MTsKCQlpZihwb2xhPT0wKQoJCQlicmVhazsKCWZvcihpPTA7aTxjdWJlLnNpemUoKTtpKyspCgl7CgkJZm9yKGo9MCsxK2k7ajxjdWJlLnNpemUoKTtqKyspCgkJewoJCQlkaWZmZXJlbnQ9Y3ViZVtpXS5jdWJlX24tY3ViZVtqXS5jdWJlX247CgkJCWlmKGRpZmZlcmVudDwwKQoJCQkJZGlmZmVyZW50PWRpZmZlcmVudCooLTEpOwoJCQlpZihkaWZmZXJlbnQ+cG9sYSkKCQkJCWJyZWFrOwoJCQlpZihkaWZmZXJlbnQ9PXBvbGEpCgkJCXsKCQkJCXA9Y3ViZVtpXS5jdWJlX207CgkJCQlxPWN1YmVbal0uY3ViZV9tOwoJCQkJaWYocTxtaW4xKQoJCQkJewoJCQkJCW1pbjE9cTsKCQkJCQlwMT1wOwoJCQkJCXExPXE7CgkJCQl9CgkJCQlicmVhazsKCQkJfQoJCX0KCQkKCX0KCWlmKHAxPT0xJnExPT0xKQoJCWNvdXQ8PCJObyBzb2x1dGlvblxuIjsKCWVsc2UgaWYocDE+cTEpCgljb3V0PDxwMTw8IiAiPDxxMTw8IlxuIjsKCWVsc2UgaWYocDE8cTEpCgkJY291dDw8cTE8PCIgIjw8cDE8PCJcbiI7Cn0KCQkKfQ==