#include<stdio.h>
#include<math.h>
typedef struct{
  double x;
  double y;
}Point;
void kock(int,Point,Point);
int main(){
  int x;
  Point A,B;
  scanf("%d",&x);
  A.x=0;
  A.y=0;
  B.x=100;
  B.y=0;
  printf("%.8f %.8f\n",A.x,A.y);
  kock(x,A,B);
  printf("%.8f %.8f\n",B.x,B.y);
  return 0;
}
void kock(int x,Point A,Point B){
  Point s,t,u;
  double theta;
  theta=M_PI*60.0/180.0;
  if(x==0)
    return;
  s.x=(2*A.x+B.x)/3;
  s.y=(2*A.y+B.y)/3;
  t.x=(A.x+2*B.x)/3;
  t.y=(A.y+2*B.y)/3;
  u.x=(t.x-s.x)*cos(theta)-(t.y-s.y)*sin(theta)+s.x;
  u.y=(t.x-s.x)*sin(theta)+(t.y-s.y)*cos(theta)+s.y;
  kock(x-1,A,s);
  printf("%.8f %.8f\n",s.x,s.y);
  kock(x-1,s,u);
  printf("%.8f %.8f\n",u.x,u.y);
  kock(x-1,u,t);
  printf("%.8f %.8f\n",t.x,t.y);
  kock(x-1,t,B);
}

