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

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

void koch(int,XY,XY);
void output(XY);

int main() 
{
    int i,n;
    XY p1={0,0},p2={100,0};

    scanf("%d",&n);
    output(p1);
    koch(n,p1,p2);
    output(p2);
    return 0;
}

void koch(int n,XY p1,XY p2)
{
    XY s,t,u;

    if(n==0)
    return 0;

    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);
    output(s);
    koch(n-1,s,u);
    output(u);
    koch(n-1,u,t);
    output(t);
    koch(n-1,t,p2);
}

void output(XY p)
{
    printf("%lf %lf\n",p.x,p.y);
}
