#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
#define rad(i) (i/180)*M_PI
typedef struct {
	double x;
	double y;
}koch;

int KochCurve(int, koch, koch);

int main() {
	int n;
	koch p1, p2;
	p1.x = p1.y = p2.y = 0.0;
	p2.x = 100.0;
	scanf("%d", &n);
	printf("%lf %lf\n", p1.x, p1.y);
	KochCurve(n,p1,p2);
	printf("%lf %lf\n", p2.x, p2.y);
	return 0;
}

int KochCurve(int n, koch p1, koch p2) {
	double d;
	koch s, u, t;
	d = p2.x - p1.x;
	if (n == 0) return 1;
	s.x = (2.0*p1.x + p2.x) / 3.0;
	s.y = (2.0*p1.y + p2.y) / 3.0;
	t.x = (p1.x + 2.0* p2.x) / 3.0;
	t.y = (p1.y + 2.0* p2.y) / 3.0;
	u.x = (t.x - s.x)*cos(M_PI / 3.0) - (t.y - s.y)*sin(M_PI / 3.0) + s.x;
	u.y = (t.x - s.x)*sin(M_PI / 3.0) - (t.y - s.y)*cos(M_PI / 3.0) + s.y;
	KochCurve(n-1, p1, s);
	printf("%lf %lf\n", s.x, s.y);
	KochCurve(n - 1, s, u);
	printf("%lf %lf\n", u.x, u.y);
	KochCurve(n - 1, u, t);
	printf("%lf %lf\n", t.x, t.y);
	KochCurve(n - 1, t, p2);
}