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

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

void koch(int n, point p1, point p2){
	if(n == 0){
		return;
	}
	else{
		point s, t, u;
		double rad = M_PI * 60 / 180;
		s.x = (2 * p1.x + p2.x) / 3;
		s.y = (2 * p1.y + p2.y) / 3;
		t.x = (p1.x + 2 * p2.x) / 3;
		t.y = (p1.y + 2 * p2.y) / 3;
		u.x = (t.x - s.x) * cos(rad) - (t.y - s.y) * sin(rad) + s.x;
		u.y = (t.x - s.x) * sin(rad) + (t.y - s.y) * cos(rad) + s.y;
		koch(n-1,p1,s);
		printf("%f %f\n" ,s.x ,s.y);
		koch(n-1,s,u);
		printf("%f %f\n" ,u.x ,u.y);
		koch(n-1,u,t);
		printf("%f %f\n" ,t.x ,t.y);
		koch(n-1,t,p2);
	}
}

int main(void){
	int n;
	point p1, p2;
	scanf("%d" ,&n);
	p1.x = 0, p2.x = 100, p1.y = 0, p2.y = 0;
	printf("%f %f\n" ,p1.x ,p1.y);
	koch(n,p1,p2);
	printf("%f %f\n" ,p2.x ,p2.y);
	
	return 0;
}
