#include <bits/stdc++.h>
double len[1010];
int n, mind100;
long double jd;
long double x[1010], y[1010], s, xx, d1, d2, mind, k;
bool used(double e, int w) {
  if (e < 1.01 || e > 999.99) return 1;
  for (int i = 1; i < w; ++i)
    if (e - 0.01 < len[i] && len[i] < e + 0.01) return 1;
  return 0;
}
void end() {
  for (int i = 1; i <= n; ++i) printf("%lf %lf\n", (double)x[i], (double)y[i]);
  exit(0);
}
void check() {
  int i;
  jd = 3.1415926535898 / n * 2.0;
  x[1] = y[1] = 0.0;
  for (i = 1; i <= n - 3; ++i) {
  aaa:;
    s = rand() % 90000 + 101;
    s = s / 100.0;
    if (used(s, i)) goto aaa;
    len[i] = s;
    x[i + 1] = x[i] + s * cos(jd);
    y[i + 1] = y[i] + s * sin(jd);
    jd += 3.1415926535898 / n * 2.0;
  }
  if (y[n - 2] < 5.0 || x[n - 2] - y[n - 2] / tan(jd) > -5.0) return;
  xx = x[n - 2] - y[n - 2] / tan(jd);
  d1 = sqrt((x[n - 2] - xx) * (x[n - 2] - xx) + y[n - 2] * y[n - 2]);
  d2 = -xx;
  if (d1 < d2)
    mind = d1;
  else
    mind = d2;
  mind100 = mind * 100 - 50;
  for (i = 1; i <= 10; ++i) {
    k = rand() % mind100 + 5;
    k /= 100.0;
    x[n] = xx + k;
    y[n] = 0.0;
    x[n - 1] = xx - k * cos(jd);
    y[n - 1] = -k * sin(jd);
    len[n - 2] = sqrt((x[n - 1] - x[n - 2]) * (x[n - 1] - x[n - 2]) +
                      (y[n - 1] - y[n - 2]) * (y[n - 1] - y[n - 2]));
    len[n - 1] = sqrt((x[n] - x[n - 1]) * (x[n] - x[n - 1]) +
                      (y[n] - y[n - 1]) * (y[n] - y[n - 1]));
    len[n] = -x[n];
    if (used(len[n - 2], n - 2) == 0 && used(len[n - 1], n - 1) == 0 &&
        used(len[n], n) == 0)
      end();
  }
}
int main() {
  int i;
  scanf("%d", &n);
  if (n <= 4) {
    puts("No solution");
    return 0;
  }
  for (i = 1; i <= 1000; ++i) check();
  puts("No solution");
  return 0;
}
