#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
for(int cs=1; cs<=t; cs++)
{
double s,r1,r2,r3;
cin>>s>>r1>>r2>>r3;
double tarea=(sqrt(3)*s*s)/4.0;
double sec1=(60.0/360.0)*acos(-1)*r1*r1;
double sec2=(60.0/360.0)*acos(-1)*r2*r2;
double sec3=(60.0/360.0)*acos(-1)*r3*r3;
double height=(sqrt(3.0)*s)/2.0;
// 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;
double bad=sec1+sec2+sec3;
// cout<<"initial bad = "<<bad<<endl;
if(!(r1+r2<s))
{
double p=(r1+r2+s)/2.0;
double area=p*(p-r1)*(p-r2)*(p-s);
area=sqrt(area);
double H=(2.0*area)/s;
if(H+r3>=height) flag=true;
// cout<<"------"<<area<<" "<<H<<endl;
//calculating for sec1
double side=sqrt(r1*r1-H*H);
double narea=0.5*H*side;
double rad=acos(H/r1);
double deg=(180*rad)/acos(-1);
double kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r1*r1;
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))
{
double p=(r3+r2+s)/2.0;
double area=p*(p-r3)*(p-r2)*(p-s);
area=sqrt(area);
double H=(2.0*area)/s;
if(H+r1>=height) flag=true;
//cout<<"------"<<area<<" "<<H<<endl;
// calculating for sec1
double side=sqrt(r3*r3-H*H);
double narea=0.5*H*side;
double rad=acos(H/r3);
double deg=(180*rad)/acos(-1);
double kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r3*r3;
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))
{
double p=(r1+r3+s)/2.0;
double area=p*(p-r1)*(p-r3)*(p-s);
area=sqrt(area);
double H=(2.0*area)/s;
if(H+r2>=height) flag=true;
// cout<<"------"<<area<<" "<<H<<endl;
// calculating for sec1
double side=sqrt(r1*r1-H*H);
double narea=0.5*H*side;
double rad=acos(H/r1);
double deg=(180*rad)/acos(-1);
double kun=60-(180.0-(90+deg));
narea=narea+(kun/360.0)*acos(-1)*r1*r1;
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;
double ans=tarea-bad;
if(flag==true)
ans=0;
cout<<"Case #"<<cs<<": "<<fixed<<setprecision(6)<<max(0.0,ans)<<endl;
}
}