/**
 * 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;
}