#include <iostream>
#include <cstdio>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#include <cstdlib>
#define INF 1000000
#define ll long long
using namespace std;
struct node{
int x,y;
};
node arr[10005];
int main()
{
int n,diff;
int difference_arr[10005];
for(int i=2;i<61;i++)
{
for(int j=1;j<i;j++)
{
diff = i*i*i - j*j*j;
if(diff>10001)
continue;
difference_arr=1;
if(arr.x==0 || arr.y==0)
{
arr.x=i;
arr.y=j;
}
else
{
if(arr.y>j)
{
arr.x=i;
arr.y=j;
}
}
}
}
while(scanf("%d",&n),n)
{
if(difference_arr[n]==1)
printf("%d %d\n",arr[n].x,arr[n].y);
else
printf("No solution\n");
}
return 0;
}