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

typedef struct{
  double x,y;
}Pos;
void calc_pos(int,Pos,Pos);
void Print(Pos);

int main(){
  Pos pos1,pos2;
  int n;
  pos1.x  =0.0;pos1.y=0.0;
  pos2.x=100.0;pos2.y=0.0;
  scanf("%d",&n);
  Print(pos1);
  calc_pos(n,pos1,pos2);
  Print(pos2);
  return 0;
}

void calc_pos(int n,Pos p1,Pos p2){
  Pos s,t,u;
  if(n==0){
    return;
  }

  s.x=(2.0*p1.x+p2.x)/3.0;
  s.y=(2.0*p1.y+p2.y)/3.0;
  t.x=(p1.x+2.0*p2.x)/3.0;
  t.y=(p1.y+2.0*p2.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;

  calc_pos(n-1,p1,s);
  //print s
  Print(s);
  calc_pos(n-1,s,u);
  //print u
  Print(u);
  calc_pos(n-1,u,t);
  //print t
  Print(t);
  calc_pos(n-1,t,p2);
}

void Print(Pos p){
  printf("%f %f\n",p.x,p.y);
}

