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

typedef struct{
  double x;
  double y;
} POINT;

void koch(int,POINT,POINT);

int main()
{
  POINT p1, p2;
  int n;

  p1.x = 0;
  p1.y = 0;

  p2.x = 100;
  p2.y = 0;

  scanf("%d",&n);

  printf("%.8f %.8f\n",p1.x,p1.y);
  koch(n, p1, p2);
  printf("%.8f %.8f\n",p2.x,p2.y);
}

void koch(int n, POINT p1, POINT p2)
{
  POINT s, t, u;

  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;
    
  if(n != 0) {
    koch(n-1, p1, s);
    printf("%.8f %.8f\n",s.x,s.y);
    koch(n-1, s, u);
    printf("%.8f %.8f\n",u.x,u.y);
    koch(n-1, u, t);
    printf("%.8f %.8f\n",t.x,t.y);
    koch(n-1, t, p2);
  }
}

