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


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

void kock(int n, Point_t a,Point_t b){
	if(n == 0)return;
	Point_t s, t, u;
	double th = M_PI * 60.0 / 180.0;
	
	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 = (1.0 * a.x + 2.0 * b.x) /3.0;
	t.y = (1.0 * a.y + 2.0 * b.y) /3.0;
	u.x = (t.x - s.x) * cos(th) - (t.y - s.y) * sin(th) + s.x;
	u.y = (t.x - s.x) * sin(th) + (t.y - s.y) * cos(th) + s.y;


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

int main(void){
	Point_t a, b;
	int n;
	
	scanf("%d",&n);
	
	a.x = 0;
	a.y = 0;
	b.x = 100;
	b.y = 0;

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

	return 0;
}
