#include<stdio.h>
#include<math.h>
typedef struct{
  double x;
  double y;
} P;
void func(int,P,P);

int main(){
  int n;
  P start1,start2;
  start1.x=0;
  start2.x=100;
  start1.y=0;
  start2.y=0;
  scanf("%d",&n);
  printf("%.8lf %.8lf\n",start1.x,start1.y);
  func(n,start1,start2);
  printf("%.8lf %.8lf\n",start2.x,start2.y);
  return 0;
}
void func(int n,P p1,P p2){
  P s,t,u;
  if(n==0) return;
 
  s.x=p1.x+(p2.x+-p1.x)/3.0;
  s.y=p1.y+(p2.y-p1.y)/3.0;
  t.x=p1.x+2*(p2.x-p1.x)/3.0;
  t.y=p1.y+2*(p2.y-p1.y)/3.0;
  u.x=s.x+(t.x-s.x)*cos(60.0*M_PI/180.0)-(t.y-s.y)*sin(60.0*M_PI/180.0);
  u.y=s.y+(t.x-s.x)*sin(60.0*M_PI/180.0)+(t.y-s.y)*cos(60.0*M_PI/180.0);
 
  
 
  func(n-1, p1, s);
      printf("%.8lf %.8lf\n",s.x,s.y);
     func(n-1, s, u);
      printf("%.8lf %.8lf\n",u.x,u.y);
     func(n-1, u, t);
      printf("%.8lf %.8lf\n",t.x,t.y);
     func(n-1, t, p2);
}
  
  


