#include <stdio.h>
#include <math.h>
struct point{
	double x,y;
};

void koch(int n, struct point a,struct point b){
	if(n==0) return;
	struct point s,t,u;

	double tp = 3.14 * 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(tp) - (t.y - s.y) * sin(tp)+s.x; 
	u.y = (t.x - s.x) * sin(tp) - (t.y - s.y) * cos(tp)+s.y; 
  	
  	koch(n-1,a,s);
  	printf("%.8f %.8f\n",s.x,s.y);
  	koch(n-1,s,u);
  	printf("%.8f %.8f\n",u.x,u.y);
  	koch(n-1,u,t);
  	printf("%.8f %.8f\n",t.x,t.y);
  	koch(n-1,t,b);
}

void print(){
	printf("%.8f %.8f\n",a.x,a.y);
	koch(n,a,b);
	printf("%.8f %.8f\n",b.x,b.y);
}
int main(){
	struct point a,b;
	int n;

	a.x = 0;
	a.y = 0;
	b.x = 100;
	b.y = 0;
	return 0;
}