#include <stdio.h>
#include<math.h>
typedef struct {
double x;
double y;
} XY;
void koch(int,XY,XY);
void show(XY);
int main(void) {
int i,n;
XY p1={0,0},p2={100,0};

scanf("%d",&n);
show(p1);
koch(n,p1,p2);
show(p2);
  return 0;
}
void koch(int n,XY p1,XY p2){
XY s,t,u;
if(n==0)
return;
s.x=(2.0*p1.x+p2.x)/3.0;
t.x=(p1.x+2.0*p2.x)/3.0;
s.y=(2.0*p1.y+p2.y)/3.0;
t.y=(p1.y+p2.y*2.0)/3.0;
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;
koch(n-1,p1,s);
show(s);
koch(n-1,s,u);
show(u);
koch(n-1,u,t);
show(t);
koch(n-1,t,p2);

}
void show(XY p){

  printf("%lf %lf\n",p.x,p.y);
}
