//二分, 当二分不断接近, x的值在精度误差范围内就可以得到x,
// 如果x不在上下界范围内就输出"No solution!";
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <cmath>
#include <vector>
#include <set>
#include <stack>
#include <algorithm>
//#include "myAlgorithm.h"
#define MAX 105
#define INF (1e8 + 5)
#define eps 1e-11
#define Rep(s, e) for( int i = s; i <= e; i++)
#define Cep(e, s) for( int i = e; i >= s; i --)
using namespace std;
//8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y
string ansNo = "No solution!";
double Y;
double func(double key){
return 8.0 * key *key * key * key + 7.0 * key * key * key + 2.0 *key * key + 3.0 * key + 6.0;
}
int check(double key){
double temp = func(key);
if( temp - Y > 0)return 1;
if( temp - Y < 0)return -1;
return 0;
}
void b_search(){
double D = 0 - eps, U = 100 + eps, mid;
while(D < U){
mid = (D + U)/(double)2.0;
if(!(fabs(mid - U) > eps && fabs(mid -D) > eps))break;
// printf("mid %-55.50f\n",mid );
// printf("U %-55.50f\n",U );
// printf("D %-55.50f\n\n",D);
int res = check(mid);
if(res == 0){
break;
}else if(res == 1){
//cout<<1<<endl;
U = mid;
}else if(res == -1){
//cout<<-1<<endl;
D = mid;
}
}
if(mid >= 0 && mid <= 100){
printf("%.4f\n", mid);
}else
cout<<ansNo<<endl;
}
int main()
{
int T;
//freopen("in.tx0t", "w", stdout);
cin>>T;
while(T--){
scanf("%lf", &Y);
b_search();
}
return 0;
}
/*
*/