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

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

void Koch_Curve(int,pp,pp);

int main(){
  pp end,begin;
  int n;
  scanf("%d",&n);
  
  begin.x = 0;
  begin.y = 0;
  end.x = 100;
  end.y = 0;
  
  printf("%.5lf %.5lf\n",begin.x,begin.y);
  Koch_Curve(n,begin,end);
  printf("%.5lf %.5f\n",end.x,end.y);
  
  return 0;
}

void Koch_Curve(int n,pp a,pp b){
  pp s,t,u;
    double theta = M_PI/3; //正三角形を作るから、60度をラジアンへ変換
    if(n > 0){
      s.x = (2.0*a.x + 1.0*b.x) / 3.0;
      s.y = (2.0*a.y + 1.0*b.y) / 3.0;
      t.x = (1.0*a.x + 2.0*b.x) / 3.0;
      t.y = (1.0*a.y + 2.0*b.y) / 3.0;
      u.x = (t.x-s.x)*cos(theta)-(t.y-s.y)*sin(theta) + s.x;
      u.y = (t.x-s.x)*sin(theta)+(t.y-s.y)*cos(theta) + s.y;
      
      Koch_Curve(n-1,a,s);
      printf("%.5lf %.5lf\n",s.x,s.y);
      
      Koch_Curve(n-1,s,u);
      printf("%.5lf %.5lf\n",u.x,u.y);
      
      Koch_Curve(n-1,u,t);
      printf("%.5lf %.5lf\n",t.x,t.y);
      
      Koch_Curve(n-1,t,b);
    }    
}


