#include <stdio.h>

#include <math.h>

typedef struct { double x, y; } point;

void koch(int n, point a, point b){
	if (n == 0) return;

	point s, t, u;
	double PI = 3. 1415926535*60.0 / 180;

	s.x = (2.0*a.x + 1.0*b.x) / 3.0;
	s.y = (2.0*a.y + 1.0*b.y) / 3.0;

	t.x = (2.0*b.x + 1.0*a.x) / 3.0;
	t.y = (2.0*b.y + 1.0*a.y) / 3.0;

	u.x = (t.x - s.x)*cos(PI) - (t.y - s.y)*sin(PI) + s.x;
	u.y = (t.x - s.x)*sin(PI) - (t.y - s.y)*cos(PI) + s.y;

	printf("%.8f %.8f\n", s.x, s.y);
	printf("%.8f %.8f\n", u.x, u.y);
	printf("%.8f %.8f\n", t.x, t.y);


	koch(n - 1, a, s);
	
	koch(n - 1, s, u);
	
	koch(n - 1, u, t);
	
	koch(n - 1, t, b);

return 0;
   

}




int main(){

	point a, b;
	a.x = 0;
	b.x = 100;
	a.y = 0;
	b.y = 0;
	int n;

	scanf("%d", &n);

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

return 0;

}