#include<bits/stdc++.h>
using namespace std;
const long double EPS=1e-8;
int main()
{
int t;
cin>>t;
for(int cs=1; cs<=t; cs++)
{
long double s,r1,r2,r3;
cin>>s>>r1>>r2>>r3;
long double tarea=(sqrt(3)*s*s)/4.0;
long double sec1=(60.0/360.0)*acos(-1)*r1*r1;
long double sec2=(60.0/360.0)*acos(-1)*r2*r2;
long double sec3=(60.0/360.0)*acos(-1)*r3*r3;
long double height=(sqrt(3.0)*s)/2.0;
if(r1>height)
{
double h=r1-height;
double arr=r1*r1*acos((r1-h)/r1)-(r1-h)*sqrt(2*r1*h-h*h);
sec1-=arr;
}
if(r2>height)
{
double h=r2-height;
double arr=r2*r2*acos((r2-h)/r2)-(r2-h)*sqrt(2*r2*h-h*h);
sec2-=arr;
}
if(r3>height)
{
double h=r3-height;
double arr=r3*r3*acos((r3-h)/r3)-(r3-h)*sqrt(2*r3*h-h*h);
sec3-=arr;
}
// if(r1+r2<=s && r2+r3<=s && r3+r1<=s)
// {
// cout<<"Case #"<<cs<<": "<<fixed<<setprecision(10)<<tarea-(sec1+sec2+sec3)<<endl;
// continue;
// }
// else if(r1>=s || r2>=s || r3>=s)
// {
// cout<<"Case #"<<cs<<": "<<fixed<<setprecision(10)<<0.0<<endl;
// continue;
// }
bool flag=false;
long double bad=sec1+sec2+sec3;
//cout<<tarea<<" "<<bad<<" "<<sec1<<" "<<height<<endl;
// cout<<"initial bad = "<<bad<<endl;
if(!(r1+r2<=s))
{
long double p=(r1+r2+s)/2.0;
long double area=p*(p-r1)*(p-r2)*(p-s);
area=sqrt(area);
long double H=(2.0*area)/s;
if(fabs(H+r3-height)<EPS || H+r3>height) flag=true;
// cout<<"------"<<area<<" "<<H<<endl;
//calculating for sec1
long double side=sqrt(r1*r1-H*H);
long double narea=0.5*H*side;
long double rad=acos(H/r1);
long double deg=(180*rad)/acos(-1);
long double kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r1*r1;
long double cut=sec1-narea;
//cout<<sec1<<"---"<<narea<<"==="<<cut<<" "<<side<<endl;
//calculating for sec2
side=sqrt(r2*r2-H*H);
narea=0.5*H*side;
rad=acos(H/r2);
deg=(180*rad)/acos(-1);
kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r2*r2;
cut=cut+(sec2-narea);
// cout<<cut<<" "<<side<<endl;
bad-=cut;
}
// cout<<"after r1--r2, bad = "<<bad<<endl;
if(!(r3+r2<=s))
{
long double p=(r3+r2+s)/2.0;
long double area=p*(p-r3)*(p-r2)*(p-s);
area=sqrt(area);
long double H=(2.0*area)/s;
if(fabs(H+r1-height)<EPS || H+r1>height) flag=true;
//cout<<"------"<<area<<" "<<H<<endl;
// calculating for sec1
long double side=sqrt(r3*r3-H*H);
long double narea=0.5*H*side;
long double rad=acos(H/r3);
long double deg=(180*rad)/acos(-1);
long double kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r3*r3;
long double cut=sec3-narea;
//cout<<sec1<<"---"<<narea<<"==="<<cut<<" "<<side<<endl;
// calculating for sec2
side=sqrt(r2*r2-H*H);
narea=0.5*H*side;
rad=acos(H/r2);
deg=(180*rad)/acos(-1);
kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r2*r2;
cut=cut+(sec2-narea);
//cout<<cut<<" "<<side<<endl;
bad-=cut;
}
//cout<<"after r2--r3, bad = "<<bad<<endl;
if(!(r1+r3<=s))
{
long double p=(r1+r3+s)/2.0;
long double area=p*(p-r1)*(p-r3)*(p-s);
area=sqrt(area);
long double H=(2.0*area)/s;
if(fabs(H+r2-height)<EPS || H+r2>height) flag=true;
// cout<<"------"<<area<<" "<<H<<endl;
// calculating for sec1
long double side=sqrt(r1*r1-H*H);
long double narea=0.5*H*side;
long double rad=acos(H/r1);
long double deg=(180*rad)/acos(-1);
long double kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r1*r1;
long double cut=sec1-narea;
//cout<<sec1<<"---"<<narea<<"==="<<cut<<" "<<side<<endl;
// calculating for sec2
side=sqrt(r3*r3-H*H);
narea=0.5*H*side;
rad=acos(H/r3);
deg=(180*rad)/acos(-1);
kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r3*r3;
cut=cut+(sec3-narea);
//cout<<cut<<" "<<side<<endl;
bad-=cut;
}
//cout<<"after r3--r1, bad = "<<bad<<endl;
//cout<<tarea<<" "<<bad<<endl;
long double ans=tarea-bad;
if(flag==true)
ans=0;
cout<<"Case #"<<cs<<": "<<fixed<<setprecision(10)<<max((long double)0,ans)<<endl;
}
}