#include <stdio.h>
#include <math.h>
 
typedef struct{
  double i;
  double j;
}Point;
 
void koch(Point,Point,int);
  
int main()
{
 
  Point a,b;
  int num;
 
  scanf("%d",&num);
 
  a.i=0;
  a.j=0;
  b.i=100;
  b.j=0;
 
  printf("%f %f\n",a.i,a.j);
  koch(a,b,num);
  printf("%f %f\n",b.i,b.j);
 
  return 0;
}
 
void koch(Point a,Point b,int num)
{
 
  if(num==0) return;
 
  Point s,t,u;
 
  s.i=(2.0*a.i+1.0*b.i)/3.0;
  s.j=(2.0*a.j+1.0*b.j)/3.0;
  t.i=(1.0*a.i+2.0*b.i)/3.0;
  t.j=(1.0*a.j+2.0*b.j)/3.0;
  u.i=(t.i-s.i)*cos(M_PI/3)-(t.j-s.j)*sin(M_PI/3)+s.i;
  u.j=(t.i-s.i)*sin(M_PI/3)+(t.j-s.j)*cos(M_PI/3)+s.j;
 
  koch(a,s,num-1);
  printf("%f %f\n",s.i,s.j);
  koch(s,u,num-1);
  printf("%f %f\n",u.i,u.j);
  koch(u,t,num-1);
  printf("%f %f\n",t.i,t.j);
  koch(t,b,num-1);
}
