#include <bits/stdc++.h>
using namespace std;
const double pi = 3.1415926535897932384626433832795;
const double eps = 1e-12;
const int BUFFER_SZ = 1 << 10;
char BUFFER[BUFFER_SZ];
int gi() {
  int x;
  scanf("%d", &x);
  return x;
}
long long gll() {
  long long x;
  scanf("%lld", &x);
  return x;
}
vector<int> gvi(int n) {
  vector<int> a;
  while (n-- > 0) a.push_back(gi());
  return a;
}
string gs() {
  scanf("%s", BUFFER);
  return string(BUFFER);
}
vector<pair<double, double> > intersect(pair<double, double> center, double r,
                                        double A, double B, double C) {
  double a = A;
  double b = B;
  double c = C + A * center.first + B * center.second;
  double x0 = -a * c / (a * a + b * b), y0 = -b * c / (a * a + b * b);
  vector<pair<double, double> > res;
  if (c * c > r * r * (a * a + b * b) + eps) {
    return res;
  } else if (abs(c * c - r * r * (a * a + b * b)) < eps) {
    res.push_back(pair<double, double>(x0 + center.first, y0 + center.second));
  } else {
    double d = r * r - c * c / (a * a + b * b);
    double mult = sqrt(d / (a * a + b * b));
    double ax, ay, bx, by;
    res.push_back(pair<double, double>(x0 + b * mult + center.first,
                                       y0 - a * mult + center.second));
    res.push_back(pair<double, double>(x0 - b * mult + center.first,
                                       y0 + a * mult + center.second));
  }
  return res;
}
vector<pair<double, double> > intersect(pair<double, double> p1, double r1,
                                        pair<double, double> p2, double r2) {
  double x2 = p2.first - p1.first;
  double y2 = p2.second - p1.second;
  double A = -2.0 * x2;
  double B = -2.0 * y2;
  double C = ((x2) * (x2)) + ((y2) * (y2)) + ((r1) * (r1)) - ((r2) * (r2));
  vector<pair<double, double> > res =
      intersect(pair<double, double>(0, 0), r1, A, B, C);
  for (pair<double, double>& p : res) {
    p.first += p1.first;
    p.second += p1.second;
  }
  return res;
};
void solve() {
  int n = gi();
  vector<vector<int> > c;
  for (int i = 0; i < n; ++i) c.push_back(gvi(3));
  vector<pair<double, double> > P;
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n; ++j) {
      for (pair<double, double> p :
           intersect(pair<double, double>(c[i][0], c[i][1]), c[i][2],
                     pair<double, double>(c[j][0], c[j][1]), c[j][2])) {
        int found = 0;
        for (pair<double, double> is : P) {
          if (abs(is.first - p.first) < eps &&
              abs(is.second - p.second) < eps) {
            found = 1;
          }
        }
        if (!found) P.push_back(p);
      }
    }
  int add = 0;
  int E = 0;
  int V = 0;
  for (int i = 0; i < n; ++i) {
    double x = c[i][0];
    double y = c[i][1];
    double r = c[i][2];
    int pn = 0;
    for (pair<double, double> p : P) {
      if (abs(sqrt(((x - p.first) * (x - p.first)) +
                   ((y - p.second) * (y - p.second))) -
              r) < eps) {
        pn++;
      }
    }
    if (pn == 0)
      add++;
    else
      E += pn;
  }
  if (add == n)
    printf("%d\n", n + 1);
  else {
    printf("%d\n", E - P.size() + 2 + add);
  }
}
int main() {
  solve();
  return 0;
}
