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

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

  int main(){
    point p1,p2;
    int n;
     scanf("%d",&n);
    p1.x=0,p1.y=0,p2.x=100,p2.y=0;
        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, point p1, point p2) {
      if (n == 0)
          return;
      // p1, p2 ?????? s, t, u ????¨????
      point s,u,t;
      double rad = M_PI * 60.0/180.0;

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