#include<stdio.h>
#include<math.h>
typedef struct a{
  double p1;
  double p2;
}zahyou;

void curve(int,zahyou,zahyou);

int main(){
  int n;
 zahyou syoki1,syoki2;

  scanf("%d",&n);
  

  syoki1.p1=0;
  syoki1.p2=0;
  syoki2.p1=100;
  syoki2.p2=0;
   printf("%f   %f\n",syoki1.p1,syoki1.p2);
  curve(n,syoki1,syoki2);
   printf("%f   %f\n",syoki2.p1,syoki2.p2);
}
void curve(int n,zahyou syoki1,zahyou syoki2){
  zahyou s,u,t;
  
  s.p1=((2*syoki1.p1)+(1*syoki2.p1))/3;
  s.p2=((2*syoki1.p2)+(1*syoki2.p2))/3;
  t.p1=((1*syoki1.p1)+(2*syoki2.p1))/3;
  t.p2=((1*syoki1.p2)+(2*syoki2.p2))/3;
  u.p1=((t.p1-s.p1)* 0.5)-((t.p2-s.p2)*0.866025)+s.p1;
  u.p2=((t.p1-s.p1)*0.866025)+((t.p2-s.p2)*0.5)+s.p2;
  if(n==0)return;
  curve(n-1,syoki1,s);
  printf("%f   %f\n",s.p1,s.p2);
  curve(n-1,s,u);
   printf("%f   %f\n",u.p1,u.p2);
   curve(n-1,u,t);
   printf("%f   %f\n",t.p1,t.p2);
   curve(n-1,t,syoki2);
  
}

