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

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

void kock(int n, point a,point b)
{
	point s, t, u;
	double x;
	
	x=M_PI*60/180;
	if(n == 0){
		return;
	}
// p1, p2 から s, t, u を計算

	s.x=(2*a.x+1*b.x)/3;
	s.y=(2*a.y+1*b.y)/3;
	t.x=(1*a.x+2*b.x)/3;
	t.y=(1*a.y+2*b.y)/3;
	u.x=(t.x-s.x)*cos(x)-(t.y-s.y)*sin(x)+s.x;
	u.y=(t.x-s.x)*sin(x)+(t.y-s.y)*cos(x)+s.y;
	
	kock(n-1, a, s);
	printf("%f %f\n",s.x,s.y);
	kock(n-1, s, u);
	printf("%f %f\n",u.x,u.y);
	kock(n-1, u, t);
	printf("%f %f\n",t.x,t.y);
	kock(n-1, t, b);
}

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