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


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


void kock(int n, coordinate p1, coordinate p2){
    if(n==0){
        return;
    }
    coordinate s;
    coordinate t;
    coordinate u;

    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);
    kock(n-1, s, u);
    printf("%.8f %.8f\n", u);
    kock(n-1, u, t);
    printf("%.8f %.8f\n", t);
    kock(n-1, t, p2);


}

int main(void){
    int n;
    scanf("%d", &n);
    coordinate p1;
    p1.x=0.0;
    p1.y=0.0;
    coordinate p2;
    p2.x=100.0;
    p2.y=0.0;

    printf("0.00000000 0.00000000\n");
    kock(n, p1, p2);
    printf("100.00000000 0.00000000\n");

    return 0;
}


