func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PAI = atan(1.0) * 4;   const double EPS = 1e-5;   int n;   double theta;   struct Point {     double x, y;     Point() {}     Point(double _x, double _y) : x(_x), y(_y) {}     Point operator+(const Point &r) const { return Point(x + r.x, y + r.y); }     Point operator-(const Point &r) const { return Point(x - r.x, y - r.y); }     Point operator*(double r) const { return Point(x * r, y * r); }     Point operator/(double r) const { return Point(x / r, y / r); }     Point rotate(double alpha) const {       double s = sin(alpha), c = cos(alpha);       return Point(x * c - y * s, x * s + y * c);     }     double lenght(const Point &r) const {       return sqrt((x - r.x) * (x - r.x) + (y - r.y) * (y - r.y));     }     Point cross_X(const Point &r) const {       double l = x - r.x;       l = l * r.y / (r.y - y);       return Point((x * r.y - y * r.x) / (r.y - y), 0);     }   } p[105];   bool same(double x, double y) { return ((x - y) <= EPS && (y - x) <= EPS); }   bool check() {     double l[105];     l[1] = p[1].lenght(p[n]);     for (int i = 2; i <= n; i++) l[i] = p[i].lenght(p[i - 1]);     for (int i = 1; i <= n; i++) {       if (p[i].x > 1000000 || p[i].x < -1000000) return false;       if (p[i].y > 1000000 || p[i].y < -1000000) return false;       if (l[i] > 1000 || l[i] < 1) return false;       for (int j = 1; j < i; j++)         if (same(l[i], l[j])) return false;     }     return true;   }   int main() {     ios::sync_with_stdio(false);     cin >> n;     if (n <= 4) {       cout <<  No solution  << endl;       return 0;     }     theta = 2 * PAI / n;     while (true) {       p[1] = Point(0, 0);       for (int i = 2; i <= n / 2; i++) {         p[i] = Point(2 * i, 0);         p[i] = p[i].rotate(theta * (i - 1)) + p[i - 1];       }       p[n / 2 + 1] = Point(900, 0);       p[n / 2 + 1] = p[n / 2 + 1].rotate(theta * (n / 2)) + p[n / 2];       for (int i = n / 2 + 2; i <= n; i++) {         p[i] = Point(2 * (i - n / 2) - 1, 0);         p[i] = p[i].rotate(theta * (i - 1)) + p[i - 1];       }       p[n] = p[n - 1].cross_X(p[n]);       if (check()) break;     }     for (int i = 1; i <= n; i++) printf( %lf %lf n , p[i].x, p[i].y);     return 0;   }   