/*
-----------------------------------------------------
stratege : 先把该整数开方,然后从2开始进行查找
注意二重循环中,指数是到32的,因为2^32
是题目的数据范围。
WA数次的关键点,输入的数可以是负数,此时
答案必定是奇数,因为输入的数是负数。
Author : Johnsondu
Problem: 1730 User: a312745658
Memory: 212K Time: 344MS
Language: C++ Result: Accepted
--------------------------------------------------------
*/
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long num, i, j, k, ans, tmp;
bool flag ;
while( cin >> k && k )
{
flag = false ;
if (k < 0) //正负的标记判断
{
k = -k ;
flag = true ;
}
ans = (int)sqrt( double (k) ) + 1; //开方,记得要double,否则CE.
num = 1;
for( i = 2; i < ans; i ++ )
{
tmp = i;
for( j = 1; j < 33; j ++ )
{
if (flag)
{
if( tmp == k && j > num && j % 2 != 0 )
num = j;
}
else
if( tmp == k && j > num)
num = j;
tmp = tmp * i; // 慢慢叠乘上去.达到 n^k的效果
}
}
cout << num << endl;
}
return 0;
}