#include <stdio.h>
#include <math.h>

typedef struct{
  double x;
  double y;
} Point;

void kock(int n, Point p1, Point p2){
  
  Point s, t, u;
  
  if(n==0) return ;

  s.x = (2*p1.x+1*p2.x)/3.0;
  s.y = (2*p1.y+1*p2.y)/3.0;
  t.x = (1*p1.x+2*p2.x)/3.0;
  t.y = (1*p1.y+2*p2.y)/3.0;
  u.x = (t.x-s.x)*cos(60*M_PI/180.0)+(t.y-s.y)*sin(60*M_PI/180.0)+s.x;
  u.y = (t.x-s.x)*sin(60*M_PI/180.0)+(t.y-s.y)*cos(60*M_PI/180.0)+s.y;
  
  kock(n-1, p1, s);
  printf("%f %f\n",s.x, s.y);
  kock(n-1, s, u);
  printf("%f %f\n", u.x, u.y);
  kock(n-1, u, t);
  printf("%f %f\n", t.x, t.y);
  kock(n-1, t, p2); 
}

int main(){

  int n;
  Point a, b;

  scanf("%d", &n);

  a.x = 0;
  a.y = 0;
  b.x = 100;
  b.y = 0;

  printf("%f %f\n", a.x, a.y);
  kock(n, a, b);
  printf("%f %f\n", b.x, b.y);
  
  return 0;
}