/**
* Author: Sergey Kopeliovich (Burunduk30@gmail.com)
*/
#include <iostream>
using namespace std;
#define forn(i, n) for (int i = 0; i < (int)(n); i++)
inline double sqr(double x) { return x * x; }
int main() {
const double L = -1, R = 2;
const int N = 1000, K = 3;
struct {
double x, y, r;
} c[K];
forn(i, K)
cin >> c[i].x >> c[i].y >> c[i].r;
int sum = 0;
forn(a, N)
forn(b, N) {
double x = L + (R - L) * (a + 0.5) / (N + 1);
double y = L + (R - L) * (b + 0.5) / (N + 1);
int cnt = 0;
forn(i, 3)
cnt += (sqr(c[i].x - x) + sqr(c[i].y - y) <= sqr(c[i].r));
sum += (cnt == 3);
}
cout.precision(20);
cout << fixed << (R - L) * (R - L) * sum / (N * N) << endl;
return 0;
}