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

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

void kock( int, Point, Point );

int main( void ){
	int n;
	Point p1, p2;
	
	p1.x = 0.0;//端点x座標(開始点)
	p1.y = 0.0;//端点y座標(開始点)
	p2.x = 100.0;//端点x座標(終了点)
	p2.y = 0.0;//端点y座標(終了点)
	
	scanf("%d", &n );
	printf("%g %g\n", p1.x, p1.y);
	
	kock( n, p1, p2 );
	
	printf("%g %g\n", p2.x, p2.y );
	
	return 0;
}

void kock( int n, Point p1, Point p2 ){
	if( n == 0 ){
		return;
	}
	
	Point s, t, u;
	
	s.x = p1.x + (p2.x-p1.x)/3.0;
	s.y = p1.y + (p2.y-p1.y)/3.0;
	
	t.x = p1.x + 2.0*(p2.x-p1.x)/3.0;
	t.y = p1.y + 2.0*(p2.y-p1.y)/3.0;
	
	u.x = (t.x-s.x) * cos(M_PI/3.0) - (t.y-s.y) * sin(M_PI/3.0) + s.x;
	u.y = (t.x-s.x) * sin(M_PI/3.0) + (t.y-s.y) * cos(M_PI/3.0) + s.y;
	
	kock( n-1, p1, s );
	printf("%g %g\n", s.x, s.y );
	
	kock( n-1, s, u );
	printf("%g %g\n", u.x, u.y );
	
	kock( n-1, u, t );
	printf("%g %g\n", t.x, t.y );
	
	kock( n-1, t, p2 );
}
