#include <bits/stdc++.h>
using namespace std;
pair<long double, long double> operator+(
    const pair<long double, long double> &a,
    const pair<long double, long double> &b) {
  return pair<long double, long double>(a.first + b.first, a.second + b.second);
}
void operator+=(pair<long double, long double> &a,
                const pair<long double, long double> &b) {
  a.first += b.first;
  a.second += b.second;
}
pair<long double, long double> rotate(pair<long double, long double> p,
                                      long double alp) {
  return pair<long double, long double>(
      p.first * cos(alp) - p.second * sin(alp),
      p.first * sin(alp) + p.second * cos(alp));
}
pair<long double, long double> rotate(pair<long double, long double> p) {
  return rotate(p, 0.6 * M_PI);
}
vector<pair<long double, long double> > pts;
int n;
void add(int rest, pair<long double, long double> base,
         pair<long double, long double> bvec) {
  if (rest == 0) return;
  long double alpha = ((n - rest) & 1) ? -0.4 * M_PI : 0.4 * M_PI;
  base += bvec;
  bvec = rotate(bvec, alpha);
  base += bvec;
  pts.push_back(base);
  bvec = rotate(bvec, alpha);
  base += bvec;
  pts.push_back(base);
  bvec = rotate(bvec, alpha);
  pts.push_back(base + bvec);
  add(rest - 1, base, bvec);
}
void out(int v) { printf(" %d", 1 + v); }
void enumerate(int cur, int basen) {
  out(basen + 3);
  if (cur < n - 1) enumerate(cur + 1, basen + 3);
  out(basen + 1);
  out(basen + 4);
  out(basen + 2);
  out(basen);
}
int main() {
  scanf("%d\n", &n);
  pts.push_back(pair<long double, long double>(0, 0));
  pts.push_back(pair<long double, long double>(10, 0));
  pair<long double, long double> vec(10, 0);
  add(n, pts[0], vec);
  assert((int)((pts).size()) == 3 * n + 2);
  printf("%d\n", (int)((pts).size()));
  for (int i = 0; i < (int)((pts).size()); i++) {
    printf("%.10lf %.10lf\n", (double)pts[i].first, (double)pts[i].second);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 5; j++) {
      printf("%d%c", 1 + 3 * i + j, " \n"[j == 4]);
    }
  }
  putchar('1');
  enumerate(0, 0);
  puts("");
  return 0;
}
