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