#include <stdio.h>
#include <math.h>
#define pai 3.141592653

typedef struct point{
    double x;
    double y;
}Point;

void koch(int d, Point a, Point b){
    Point s, t, u;
    if(d == 0) return ;

    s.x = (2 * a.x + 1 * b.x) / 3;
    s.y = (2 * a.y + 1 * b.y) / 3;

    t.x = (1 * a.x + 2 * b.x) / 3;
    t.y = (1 * a.y + 2 * b.y) / 3;

    u.x = (t.x - s.x) * cos(60*(pai/180)) - (t.y - s.y) * sin(60*(pai/180)) + s.x;
    u.y = (t.x - s.x) * sin(60*(pai/180)) + (t.y - s.y) * cos(60*(pai/180))+ s.y;

    koch(d-1, a, s);
    printf("%.8f %.8f\n", s.x, s.y);
    koch(d-1, s, u);
    printf("%.8f %.8f\n", u.x, u.y);
    koch(d-1, u, t);
    printf("%.8f %.8f\n", t.x, t.y);
    koch(d-1, t, b);
}

int main(){
    int nm;
    Point a = {0, 0}, b = {100, 0};

    scanf("%d", &nm);

    printf("%.8f %.8f\n", a.x, a.y);
    koch(nm, a, b);
    printf("%.8f %.8f\n", b.x, b.y);

    return 0;
}
