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

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

void kock(int, dot, dot);

void kock(int n, dot p1, dot p2){

    dot s, t, u;

    if(n==0) return;

    s.x=(2*p1.x+1*p2.x)/3;
    s.y=(2*p1.y+1*p2.y)/3;
    t.x=(1*p1.x+2*p2.x)/3;
    t.y=(1*p1.y+2*p2.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, p1, s);
    printf("%.8f %.8f\n", s.x, s.y);
    kock(n-1, s, u);
    printf("%.8f %.8f\n", u.x, u.y);
    kock(n-1, u, t);
    printf("%.8f %.8f\n", t.x, t.y);
    kock(n-1, t, p2);
    return;
}

int main(void){

    int n;
    dot start={0,0}, end={100, 0};

    scanf("%d", &n);

    printf("%.8f %.8f\n", start.x, start.y);
    kock(n, start, end);
    printf("%.8f %.8f\n", end.x, end.y);


    return 0;
}
