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

 typedef struct{
  double x;
  double y;
}XY;
 
void kock(int,XY,XY);

int main(){
  int n;
  XY P1,P2;
  P1.x=0.0;
  P1.y=0.0;
  P2.x=100.0;
  P2.y=0.0;

  
  scanf("%d",&n);
 printf("%.8f %.8f\n",P1.x,P1.y);
  kock(n,P1,P2);
 printf("%.8f %.8f\n",P2.x,P2.y);
  return 0;

}

void kock(int n,XY p1,XY p2)
{
  XY s,t,u;
 
  if(n == 0) return;
 
  s.x = ((2 * p1.x) + (1 * p2.x)) /3;
  s.y = ((2 * p1.y) + (1 * p2.y)) /3;
  t.x = ((1 * p1.x) + (2 * p2.x)) /3;
  t.y = ((1 * p1.y) + (2 * p2.y)) /3;
  u.x = (t.x - s.x) * 1/2 - (t.y - s.y) * sqrt(3) /2 + s.x;
  u.y = (t.x - s.x) * sqrt(3) /2 + (t.y - s.y) * 1/2 + s.y;
 
  kock(n-1,p1,s);
  printf("%.8f %.8f\n",s.x,s.y);
  kock(n-1,s,u);
  printf("%.8f %.8f\n",u.x,u.y);
  kock(n-1,u,t);
  printf("%.8f %.8f\n",t.x,t.y);
 
  kock(n-1,t,p2);
}