#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
  void get(double _x, double _y) {
    x = _x;
    y = _y;
  }
};
Point ini[6], D;
int N;
void pre() {
  ini[1].get(-3.601321235851749, 10.057331467373021);
  ini[2].get(3.830127018922193, 3.366025403784439);
  ini[3].get(12.490381056766580, 8.366025403784439);
  ini[4].get(10.411264148588986, 18.147501411122495);
  ini[5].get(0.466045194906253, 19.192786043799030);
  D.get(ini[4].x - ini[1].x, ini[4].y - ini[1].y);
}
Point pt[1000];
int pn;
void run() {
  int i, j;
  for (i = 1; i <= 5; i++) pt[i] = ini[i];
  for (i = 6; i <= N * 4 + 1; i++) {
    pt[i].get(pt[i - 4].x + D.x, pt[i - 4].y + D.y);
  }
  printf("%d\n", N * 4 + 1);
  for (i = 1; i <= N * 4 + 1; i++) {
    printf("%.12lf %.12lf\n", pt[i].x, pt[i].y);
  }
  for (i = 1; i <= 5; i++) {
    printf("%d", i);
    if (i == 5)
      printf("\n");
    else
      printf(" ");
  }
  for (i = 2; i <= N; i++) {
    printf("%d", (i - 1) * 4);
    for (j = 0; j < 4; j++) printf(" %d", i * 4 - 2 + j);
    printf("\n");
  }
  printf("1 3 5 2 4");
  for (i = 2; i <= N; i++) {
    printf(" %d %d %d %d", (i - 1) * 4 + 3, (i - 1) * 4 + 5, (i - 1) * 4 + 2,
           (i - 1) * 4 + 4);
  }
  for (i = N; i > 1; i--) {
    printf(" %d", i * 4 - 4);
  }
  printf(" 1\n");
}
int main() {
  pre();
  scanf("%d", &N);
  run();
  return 0;
}
