#include<stdio.h>
#include<math.h>
void print(double p[]){
	printf("%lf %lf\n",p[0],p[1]);
}

void kock(int n, double p1[],double p2[]){
double s[2],t[2],u[2];
	s[0]=(p2[0]-p1[0])/3+p1[0];
	s[1]=(p2[1]-p1[1])/3+p1[1];
	t[0]=2*(p2[0]-p1[0])/3+p1[0];
	t[1]=2*(p2[1]-p1[1])/3+p1[1];
	u[0]=(t[0]-s[0])/2-sqrt(3)/2*(t[1]-s[1])+s[0];
	u[1]=(t[1]-s[1])/2+sqrt(3)/2*(t[0]-s[0])+s[1];
	if(n==0) return;
	kock(n-1,p1,s);
	print(s);
	kock(n-1,s,u);
	print(u);
	kock(n-1,u,t);
	print(t);
	kock(n-1,t,p2);
}


int main(){
	int n;
	double p1[2],p2[2];
	p1[0]=p1[1]=p2[1]=0;
p2[0]=100;
	
	scanf("%d",&n);
	print(p1);
	kock(n,p1,p2);
	print(p2);
	
	return 0;
}
		