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

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

point roll(point p1, point p2){
    point p3;
    p3.x = p1.x + (p2.x - p1.x) * cos(M_PI / 3) - (p2.y - p1.y) * sin(M_PI / 3);
    p3.y = p1.y + (p2.x - p1.x) * sin(M_PI / 3) + (p2.y - p1.y) * cos(M_PI/3);

    return p3;
}

void kock(int n, point p1, point p2)
{
    if (n==0)
        return;
    
    point s = {(2*p1.x+p2.x)/3 , (2*p1.y+p2.y)/3};
    point t = {(p1.x+2*p2.x)/3 , (p1.y+2*p2.y)/3};
    point u = roll(s, t);

    kock(n-1, p1, s);
    printf("%f %f\n", s.x, s.y);
    kock(n - 1, s, u);
    printf("%f %f\n", u.x, u.y);
    kock(n - 1, u, t);
    printf("%f %f\n", t.x, t.y);
    kock(n - 1, t, p2);
}

int main(void){

    int i, j, n;
    point p1 = {0.0, 0.0};
    point p2 = {100.0, 0.0};

    scanf("%d", &n);

    printf("%f %f\n", p1.x, p1.y);

    kock(n, p1, p2);

    printf("%f %f\n", p2.x, p2.y);

    return 0;
}
