#include<stdio.h>
#include<math.h>
 
struct Point{
  double x;
  double y;
};
 
int kock(int,struct Point,struct Point);
 
int main(){
  
  struct Point p1,p2;
  int n;
  
  scanf("%d",&n);
  
  p1.x=0;
  p1.y=0;
  p2.x=100;
  p2.y=0;
 
 
  printf("%f %f\n", p1.x , p1.y );
  kock(n , p1 , p2 );
  printf("%f %f\n", p2.x , p2.y );
   
  return 0;
}
 
int kock(int n,struct Point a,struct Point b){
  struct Point s, t, u;
 
  if(n==0){
    return 0;
  }
 
  s.x=(2*a.x+1*b.x)/3;
  s.y=(2*a.y+1*b.y)/3;
  
  t.x=(1*a.x+2*b.x)/3;
  t.y=(1*a.y+2*b.y)/3;

  u.x=(t.x-s.x)*cos(M_PI/3)-(t.y-s.y)*sin(M_PI/3)+s.x;
  u.y=(t.x-s.x)*sin(M_PI/3)+(t.y-s.y)*cos(M_PI/3)+s.y;
 
  kock(n - 1,a,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,b);
}

