#include <bits/stdc++.h>
using namespace std;
pair<long double, long double> operator-(pair<long double, long double> a,
                                         pair<long double, long double> b) {
  return pair<long double, long double>(a.first - b.first, a.second - b.second);
}
long double cros(pair<long double, long double> a,
                 pair<long double, long double> b) {
  return a.first * b.second - a.second * b.first;
}
long long int sign(long double x) {
  if (x > 0)
    return 1;
  else if (x < 0)
    return -1;
  else
    return 0;
}
long double gm(pair<long double, long double> a,
               pair<long double, long double> b) {
  return (b.second - a.second) / (b.first - a.first);
}
pair<long double, long double> itp(pair<long double, long double> a,
                                   pair<long double, long double> b,
                                   pair<long double, long double> c,
                                   pair<long double, long double> d) {
  if (a.first == b.first)
    return pair<long double, long double>(
        a.first, gm(c, d) * (a.first - c.first) + c.second);
  else if (c.first == d.first)
    return pair<long double, long double>(
        c.first, gm(a, b) * (c.first - a.first) + a.second);
  else {
    long double m1 = gm(a, b), m2 = gm(c, d);
    long double p =
        (c.second - a.second + m2 * a.first - m2 * c.first) / (m1 - m2);
    return pair<long double, long double>(a.first + p, a.second + p * m1);
  }
}
bool inter(pair<long double, long double> a, pair<long double, long double> b,
           pair<long double, long double> c, pair<long double, long double> d) {
  if (sign(cros(c - a, b - a)) * sign(cros(d - a, b - a)) < 0 &&
      sign(cros(a - c, d - c)) * sign(cros(b - c, d - c)) < 0)
    return 1;
  else
    return 0;
}
long double len(pair<long double, long double> a,
                pair<long double, long double> b) {
  pair<long double, long double> d = a - b;
  return sqrt(d.first * d.first + d.second * d.second);
}
pair<long double, long double> mid(pair<long double, long double> a,
                                   pair<long double, long double> b) {
  return pair<long double, long double>((a.first + b.first) / 2,
                                        (a.second + b.second) / 2);
}
const long double eps = 1e-9;
bool inbt(pair<long double, long double> a, pair<long double, long double> b,
          pair<long double, long double> c, pair<long double, long double> d) {
  return cros(a - b, d - b) * cros(c - b, d - b) < eps;
}
bool in(pair<long double, long double> p, pair<long double, long double> a,
        pair<long double, long double> b, pair<long double, long double> c) {
  return inbt(a, b, c, p) && inbt(b, c, a, p) && inbt(c, a, b, p);
}
long double per(pair<long double, long double> &a,
                pair<long double, long double> &b,
                vector<pair<long double, long double>> t[], int n, int id) {
  vector<pair<long double, long double>> intP;
  intP.push_back(a);
  intP.push_back(b);
  for (int i = 0; i < n; i++) {
    if (i != id) {
      for (int j = 0; j < 3; j++) {
        if (inter(a, b, t[i][j], t[i][(j + 1) % 3])) {
          intP.push_back(itp(a, b, t[i][j], t[i][(j + 1) % 3]));
        }
      }
    }
  }
  sort(intP.begin(), intP.end());
  intP.resize(unique(intP.begin(), intP.end()) - intP.begin());
  long double sum = 0;
  for (int i = 0; i < intP.size() - 1; i++) {
    pair<long double, long double> md = mid(intP[i], intP[i + 1]);
    bool fg = 1;
    for (int j = 0; j < n; j++) {
      if (j != id && in(md, t[j][0], t[j][1], t[j][2])) fg = 0;
    }
    if (fg) sum += len(intP[i], intP[i + 1]);
  }
  return sum;
}
int main() {
  int n;
  cin >> n;
  cout << fixed << setprecision(12);
  vector<pair<long double, long double>> t[n];
  for (int i = 0; i < n; i++) {
    t[i].resize(3);
    cin >> t[i][0].first >> t[i][0].second >> t[i][1].first >> t[i][1].second >>
        t[i][2].first >> t[i][2].second;
  }
  long double ans = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 3; j++) {
      ans += per(t[i][j], t[i][(j + 1) % 3], t, n, i);
    }
  }
  cout << ans << endl;
}
