#include<bits/stdc++.h>
using namespace std;
struct data
{
int x,y;
double s,m;
}f[2005];
bool vis[2005][2005];
bool cmp(data a,data b)
{
return a.s>b.s;
}
int n;
double sum;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>f[i].x>>f[i].y>>f[i].m;
f[i].s=f[i].m*f[i].m/2;
sum+=f[i].s;
}
sort(f+1,f+n+1,cmp);
for(int i=3;i<=n;i++)
{
if(f[i].x==f[i-2].x&&f[i].y==f[i-2].y&&f[i].m==f[i-2].m)
{
f[i].y=0;
f[i].m=0;
f[i].x=0;
sum-=f[i].s;
f[i].s=0;
}
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(i!=j)
{
bool g=1,h=1;
if(f[i].m+f[i].x<f[j].x)
{
g=0;
}
if(f[i].m+f[i].y<f[j].y)
{
h=0;
}
int c=f[i].x-f[j].x;
int d=f[i].y-f[j].y;
int p=f[j].x+f[j].y+f[j].m-f[j].x;
int z=f[i].x+f[i].y+f[i].m-f[j].x;
if(c<=0&&g&&h)
{
if(d<=0)
{
double s1;
if(p<=z)
{
s1=(f[j].m)*(f[j].m)/2;
}
else if(p>z)
{
if(f[i].m+d+c<=0)
{
s1=0;
}
else s1=(f[i].m+d+c)*(f[i].m+d+c)/2;
}
sum-=s1;
}
else if(d>0)
{
double b,s1;
if(p<=z)
{
if(f[j].m-d<=0)
{
s1=0;
}
else
{
b=f[j].m-d;
s1=b*b/2;
}
}
else if(p>z)
{
if(f[i].m+c<=0)
{
s1=0;
}
else
{
b=f[i].m+c;
s1=b*b/2;
}
}
sum-=s1;
}
}
else if(c>0&&g&&h)
{
double g,s1;
if(d<=0)
{
if(p<=z)
{
if(f[j].m-c<=0)
{
s1=0;
}
else
{
g=f[j].m-c;
s1=g*g/2;
}
}
else if(p>z)
{
if(f[i].m+d<=0)
{
s1=0;
}
else
{
g=f[i].m+d;
s1=g*g/2;
}
}
sum-=s1;
}
else if(d>0)
{
if(c+d<f[j].m)
{
double b=f[j].m-c-d;
double s1=b*b/2;
sum-=s1;
}
}
}
}
}
}
if(!sum)
{
sum=0;
}
printf("%.1f",sum);
return 0;
}