#include <bits/stdc++.h>
using namespace std;
struct Node {
  double x, y, r;
  int num;
} a[1005];
bool cmp(Node p, Node q) { return p.r > q.r; }
bool judge(Node u, Node v) {
  return (u.x - v.x) * (u.x - v.x) + (u.y - v.y) * (u.y - v.y) <
         (u.r + v.r) * (u.r + v.r);
}
double cal(Node u) { return u.r * u.r * acos(-1); }
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lf%lf%lf", &a[i].x, &a[i].y, &a[i].r);
  sort(a + 1, a + n + 1, cmp);
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      if (judge(a[i], a[j])) a[j].num++;
  double ans = 0;
  for (int i = 1; i <= n; i++)
    if (!a[i].num)
      ans += cal(a[i]);
    else if (a[i].num & 1)
      ans += cal(a[i]);
    else
      ans -= cal(a[i]);
  printf("%.8f\n", ans);
  return 0;
}
