#include <bits/stdc++.h>
using namespace std;
const long double C = 1e6;
struct cir {
  int x, y, z;
} a[5];
int disf(cir x, cir y) {
  return (x.x - y.x) * (x.x - y.x) + (x.y - y.y) * (x.y - y.y);
}
bool kcr(cir x, cir y) {
  return disf(x, y) <= (x.z + y.z) * (x.z + y.z) &&
         disf(x, y) >= (x.z - y.z) * (x.z - y.z);
}
bool cr(cir x, cir y) {
  return disf(x, y) < (x.z + y.z) * (x.z + y.z) &&
         disf(x, y) > (x.z - y.z) * (x.z - y.z);
}
bool in(long double x, long double y, cir _) {
  return (_.x - x) * (_.x - x) + (_.y - y) * (_.y - y) < _.z * _.z;
}
pair<pair<long double, long double>, pair<long double, long double> > check(
    int i, int j) {
  bool flag = 0;
  if (a[i].y == a[j].y) flag = 1, swap(a[i].x, a[i].y), swap(a[j].x, a[j].y);
  long double k = 1. * (a[i].x - a[j].x) / (a[j].y - a[i].y);
  long double g = (a[i].z * a[i].z - a[j].z * a[j].z - a[i].x * a[i].x +
                   a[j].x * a[j].x - a[i].y * a[i].y + a[j].y * a[j].y) /
                  (2. * (a[j].y - a[i].y));
  long double aa = k * k + 1;
  long double bb = 2 * ((g - a[i].y) * k - a[i].x);
  long double cc =
      a[i].x * a[i].x + (g - a[i].y) * (g - a[i].y) - a[i].z * a[i].z;
  long double x1 =
      (-bb - sqrt(max(bb * bb - 4 * aa * cc, (long double)0))) / (2 * aa);
  long double x2 =
      (-bb + sqrt(max(bb * bb - 4 * aa * cc, (long double)0))) / (2 * aa);
  long double y1 = k * x1 + g;
  long double y2 = k * x2 + g;
  if (flag)
    swap(x1, y1), swap(x2, y2), swap(a[i].x, a[i].y), swap(a[j].x, a[j].y);
  x1 = (round(x1 * C)) / C;
  x2 = (round(x2 * C)) / C;
  y1 = (round(y1 * C)) / C;
  y2 = (round(y2 * C)) / C;
  return pair<pair<long double, long double>, pair<long double, long double> >(
      pair<long double, long double>(x1, y1),
      pair<long double, long double>(x2, y2));
}
int main() {
  int n;
  cin >> n;
  if (n == 1)
    return cout << 2, 0;
  else if (n == 2) {
    for (int i = 1; i <= 2; ++i) cin >> a[i].x >> a[i].y >> a[i].z;
    if (cr(a[1], a[2]))
      return cout << 4, 0;
    else
      return cout << 3, 0;
  }
  for (int i = 1; i <= 3; ++i) cin >> a[i].x >> a[i].y >> a[i].z;
  set<pair<long double, long double> > g[5];
  int c = 3;
  for (int i = 1; i <= 3; ++i)
    for (int j = i + 1; j <= 3; ++j)
      if (kcr(a[i], a[j])) {
        pair<pair<long double, long double>, pair<long double, long double> >
            t = check(i, j);
        g[0].insert(t.first);
        g[0].insert(t.second);
        g[i].insert(t.first);
        g[i].insert(t.second);
        g[j].insert(t.first);
        g[j].insert(t.second);
        if (c > 1) --c;
      }
  int e = 0, v = g[0].size() + 6;
  for (int i = 1; i <= 3; ++i) e += g[i].size() + 2;
  cout << e - v + c + 1;
}
