func_code_string: #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;   }   