#include <bits/stdc++.h>
using namespace std;
inline int ADD(int a, int b) {
  a += b;
  if (a >= 1000000007) a -= 1000000007;
  return (int)a;
}
inline void ADDTO(int &a, int b) {
  a += b;
  if (a >= 1000000007) a -= 1000000007;
}
inline void SUBTO(int &a, int b) {
  a -= b;
  if (a < 0) a += 1000000007;
}
inline int MUL(int a, int b) { return (int)((long long)a * b % 1000000007); }
const double PI = acos(-1.);
struct point {
  double x, y;
  point() {}
  point(double xx, double yy) : x(xx), y(yy) {}
  point rotate(double a) {
    double xx = x * cos(a) - y * sin(a);
    double yy = x * sin(a) + y * cos(a);
    return point(xx, yy);
  }
  void output() { printf("%.12lf %.12lf\n", x, y); }
};
point operator+(point a, point b) { return point(a.x + b.x, a.y + b.y); }
point operator-(point a, point b) { return point(a.x - b.x, a.y - b.y); }
int main() {
  int n;
  while (scanf("%d", &n) == 1) {
    point A(0, 0);
    point B(cos(36. / 180 * PI) * 2 * 10, 0);
    point C = point(10, 0).rotate(-72. / 180 * PI);
    point D = point(10, 0).rotate(36. / 180 * PI);
    point E = B.rotate(-36. / 180 * PI);
    printf("%d\n", 4 * n + 1);
    A.output();
    for (int i = 0; i < (n); ++i) {
      A = A + B;
      A.output();
    }
    for (int i = 0; i < (n); ++i) {
      A = A - B;
      (A + C).output();
      (A + D).output();
      (A + E).output();
    }
    for (int i = 0; i < (n); ++i) {
      printf("%d %d %d %d %d\n", i + 1, 4 * n - 3 * i, i + 2, 4 * n - 3 * i + 1,
             4 * n - 3 * i - 1);
    }
    for (int i = (0); i <= (n); ++i) {
      if (i) printf(" ");
      printf("%d", i + 1);
    }
    for (int i = 0; i < (n); ++i)
      printf(" %d %d %d %d", n + i * 3 + 2, n + i * 3 + 3, n + i * 3 + 4,
             n - i);
    puts("");
  }
}
