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

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

void koch(Point p1, Point p2, int n) {
    Point 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;
    
    koch(p1, s, n - 1);
    printf("%.8f %.8f\n", s.x, s.y);
    koch(s, u, n - 1);
    printf("%.8f %.8f\n", u.x, u.y);
    koch(u, t, n - 1);
    printf("%.8f %.8f\n", t.x, t.y);
    koch(t, p2, n - 1);
}

int main() {
    int n;
    Point p1, p2;

    p1.x = 0.0;
    p1.y = 0.0;
    p2.x = 100.0;
    p2.y = 0.0;
    
    scanf("%d", &n);

    printf("%.8f %.8f\n", 0.0, 0.0);
    koch(p1, p2, n);
    printf("%.8f %.8f\n", 100.0, 0.0);
    
    return 0;
}

