#include <stdio.h>
#include <math.h>
struct XX{
  double x;
  double y;
};
  void kock(int n,struct XX p1,struct XX p2){
    struct XX s,t,u;
    if(n==0) return;

    s.x=(2*p1.x+p2.x)/3;
    s.y=(2*p1.y+p2.y)/3;

    t.x=(p1.x+2*p2.x)/3;
    t.y=(p1.y+2*p2.y)/3;

    u.x=(t.x-s.x)*cos(M_PI/3)-(t.y-s.y)*sin(M_PI/3)+s.x;
    u.y=(t.x-s.x)*sin(M_PI/3)+(t.y-s.y)*cos(M_PI/3)+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);



  }
int main(){
  int n;
  struct XX p1,p2;
  p1.x=0;
  p1.y=0;
  p2.x=100;
  p2.y=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;
}