//Koch Curve

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

typedef struct
{
  double x,y;
}Locate;

void koch(int n,Locate a,Locate b)
{
  Locate s,t,u;
  double change = M_PI*60.0/180.0;

  if(n == 0) return;
  //calculate
  s.x = (2.0 * a.x + 1.0 * b.x) / 3.0;
  s.y = (2.0 * a.y + 1.0 * b.y) / 3.0;
  t.x = (1.0 * a.x + 2.0 * b.x) / 3.0;
  t.y = (1.0 * a.y + 2.0 * b.y) / 3.0;
  u.x = (t.x - s.x)*cos(change) - (t.y - s.y)*sin(change) + s.x;
  u.y = (t.x - s.x)*sin(change) + (t.y - s.y)*cos(change) + s.y;


  //work again
  koch(n-1,a,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,b);
}

int main()
{
  int n;
  Locate a,b;
  
  //initialize number
  a.x = 0;
  a.y = 0;
  b.x = 100;
  b.y = 0;

  //input data
  scanf("%d",&n);

  printf("%.8f %.8f\n",a.x,a.y);
  //work
  koch(n,a,b);
  printf("%.8f %.8f\n",b.x,b.y);

  return 0; 
}

