#include<stdio.h>
  typedef struct{
  double x;
  double y;
}point;

double root=1.732050807568877;

void kock (int n,point p1,point p2){
  point s,t,u;
  if (n == 0)return;
   s.x=(p1.x*2+p2.x*1)/3;
   s.y=(p1.y*2+p2.y*1)/3;
   t.x=(p1.x*1+p2.x*2)/3;
   t.y=(p1.y*1+p2.y*2)/3;
   u.x=(t.x-s.x)/2-(t.y-s.y)*(root/2)+s.x;
   u.y=(t.x-s.x)*(root/2)+(t.y-s.y)/2+s.y;

   kock(n-1, p1, s);
   printf("%.8lf %.8lf\n",s.x,s.y);
   kock(n-1, s, u);
   printf("%.8lf %.8lf\n",u.x,u.y);
   kock(n-1, u, t);
   printf("%.8lf %.8lf\n",t.x,t.y);
   kock(n-1, t, p2);
}
int main (){
  int n;
  point p1={0,0},p2={100,0};
  scanf("%d",&n);
  printf("%.8lf %.8lf\n",p1.x,p1.y);
  kock(n,p1,p2);
  printf("%.8lf %.8lf\n",p2.x,p2.y);
  return 0;
}

