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

struct Point{
	double x;
	double y;
};

void koch(double d,struct Point a,struct Point b){
	
	if(d==0){
		return;
	}
	
	struct Point s,t,u;
	
	s.x=(2*a.x+b.x)/3;
	s.y=(2*a.y+b.y)/3;
	t.x=(a.x+2*b.x)/3;
	t.y=(a.y+2*b.y)/3;
	u.x=(t.x-s.x)*cos(M_PI*60/180)-(t.y-s.y)*sin(M_PI*60/180)+s.x;
	u.y=(t.x-s.x)*sin(M_PI*60/180)+(t.y-s.y)*cos(M_PI*60/180)+s.y;

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

int main(){

	int n;
	scanf("%d",&n);
	
	struct Point a,b;
	a.x=0;
	a.y=0;
	b.x=100;
	b.y=0;
	
	printf("%.8lf %.8lf\n",a.x,a.y);
	koch(n,a,b);
	printf("%.8lf %.8lf\n",b.x,b.y);
	
	return 0;

}
