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

struct Point {
  double x,y;
};

void kohho(int n,struct Point p1,struct Point p2);

int main(){
  struct Point p1={0.0,0.0};
  struct Point p2={100.0,0.0};
  int n;
 
  scanf("%d",&n);


  printf("%.8f %.8f\n",p1.x,p1.y);
  kohho(n,p1,p2);

  printf("%.8f %.8f\n",p2.x,p2.y);

  return 0;
}
  
void kohho(int n,struct Point p1,struct Point p2){

  if (n==0)        /*0の場合は除く*/
    return;
  struct Point s,t,u;
  double kakudo=M_PI * 60.0/180.0;/*ラジアンへの変換*/  
  
  s.x=(2.0*p1.x+1.0*p2.x)/3.0;          /*座標の計算*/
  s.y=(2.0*p1.y+1.0*p2.y)/3.0;
  t.x=(1.0*p1.x+2.0*p2.x)/3.0;
  t.y=(1.0*p1.y+2.0*p2.y)/3.0;
  u.x=(t.x-s.x)*cos(kakudo)-(t.y-s.y)*sin(kakudo)+s.x;
  u.y=(t.x-s.x)*sin(kakudo)+(t.y-s.y)*cos(kakudo)+s.y;

  kohho(n-1,p1,s);
 
  printf("%.8f %.8f\n",s.x,s.y);
  kohho(n-1,s,u);
  
  printf("%.8f %.8f\n",u.x,u.y);
  kohho(n-1,u,t);
  
  printf("%.8f %.8f\n",t.x,t.y);
  kohho(n-1,t,p2);

}
  

