// iostream is too mainstream
#include <cstdio>
// bitch please
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <queue>
#include <stack>
#include <algorithm>
#include <iomanip>
#define dibs reserve
#define OVER9000 1234567890
#define patkan 9
#define tisic 47
#define soclose 10e-7
#define ALL_THE(CAKE,LIE) for(auto LIE =CAKE.begin(); LIE != CAKE.end(); LIE++)
#define chocolate win
#define ff first
#define ss second
#define abs(x) ((x < 0)?-(x):(x))
// mylittlepony
using namespace std;
int main() {
// freopen("zeriba.in","r",stdin);
int T;
scanf(" %d",&T);
for(int t =0; t < T; t++) {
int N;
scanf(" %d",&N);
printf("Case %d: ",t+1);
vector<int> L(N);
for(int i =0; i < N; i++) scanf(" %d",&L[i]);
// possible?
int S =0;
bool ok =true;
for(int i =0; i < N; i++) S +=L[i];
for(int i =0; i < N; i++) if(L[i]*2 >= S) ok =false;
if(!ok) {printf("can't form a convex polygon\n"); continue;}
double Rmin =soclose, Rmax =1e+7;
for(int i =0; i < N; i++) Rmin =max(Rmin,L[i]/2.0)+soclose;
while(Rmax-Rmin > soclose) {
double R =(Rmax+Rmin)/2;
double ang =0;
for(int i =0; i < N; i++) ang +=asin(1.0*L[i]/(2*R));
if(ang > 4*atan(1)) Rmin =R;
else Rmax =R;}
printf("%.4f\n",Rmax);}
return 0;}
// look at my code
// my code is amazing
Ly8gaW9zdHJlYW0gaXMgdG9vIG1haW5zdHJlYW0KI2luY2x1ZGUgPGNzdGRpbz4KLy8gYml0Y2ggcGxlYXNlCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb21hbmlwPgojZGVmaW5lIGRpYnMgcmVzZXJ2ZQojZGVmaW5lIE9WRVI5MDAwIDEyMzQ1Njc4OTAKI2RlZmluZSBwYXRrYW4gOQojZGVmaW5lIHRpc2ljIDQ3CiNkZWZpbmUgc29jbG9zZSAxMGUtNwojZGVmaW5lIEFMTF9USEUoQ0FLRSxMSUUpIGZvcihhdXRvIExJRSA9Q0FLRS5iZWdpbigpOyBMSUUgIT0gQ0FLRS5lbmQoKTsgTElFKyspCiNkZWZpbmUgY2hvY29sYXRlIHdpbgojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgYWJzKHgpICgoeCA8IDApPy0oeCk6KHgpKQovLyBteWxpdHRsZXBvbnkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCQppbnQgbWFpbigpIHsKCS8vIGZyZW9wZW4oInplcmliYS5pbiIsInIiLHN0ZGluKTsKCWludCBUOwoJc2NhbmYoIiAlZCIsJlQpOwoJCiAgICBmb3IoaW50IHQgPTA7IHQgPCBUOyB0KyspIHsKICAgIAlpbnQgTjsKICAgIAlzY2FuZigiICVkIiwmTik7CiAgICAJcHJpbnRmKCJDYXNlICVkOiAiLHQrMSk7CiAgICAJdmVjdG9yPGludD4gTChOKTsKICAgIAlmb3IoaW50IGkgPTA7IGkgPCBOOyBpKyspIHNjYW5mKCIgJWQiLCZMW2ldKTsKICAgIAkKICAgIAkvLyBwb3NzaWJsZT8KICAgIAlpbnQgUyA9MDsKICAgIAlib29sIG9rID10cnVlOwogICAgCWZvcihpbnQgaSA9MDsgaSA8IE47IGkrKykgUyArPUxbaV07CiAgICAJZm9yKGludCBpID0wOyBpIDwgTjsgaSsrKSBpZihMW2ldKjIgPj0gUykgb2sgPWZhbHNlOwogICAgCWlmKCFvaykge3ByaW50ZigiY2FuJ3QgZm9ybSBhIGNvbnZleCBwb2x5Z29uXG4iKTsgY29udGludWU7fQogICAgCQogICAgCWRvdWJsZSBSbWluID1zb2Nsb3NlLCBSbWF4ID0xZSs3OwogICAgCWZvcihpbnQgaSA9MDsgaSA8IE47IGkrKykgUm1pbiA9bWF4KFJtaW4sTFtpXS8yLjApK3NvY2xvc2U7CiAgICAJd2hpbGUoUm1heC1SbWluID4gc29jbG9zZSkgewogICAgCQlkb3VibGUgUiA9KFJtYXgrUm1pbikvMjsKICAgIAkJZG91YmxlIGFuZyA9MDsKICAgIAkJZm9yKGludCBpID0wOyBpIDwgTjsgaSsrKSBhbmcgKz1hc2luKDEuMCpMW2ldLygyKlIpKTsKICAgIAkJaWYoYW5nID4gNCphdGFuKDEpKSBSbWluID1SOwogICAgCQllbHNlIFJtYXggPVI7fQogICAgCQogICAgCXByaW50ZigiJS40ZlxuIixSbWF4KTt9CiAgICByZXR1cm4gMDt9CiAgICAgICAgCi8vIGxvb2sgYXQgbXkgY29kZQovLyBteSBjb2RlIGlzIGFtYXppbmc=