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

typedef struct{

  double i;

  double j;
  
}Roll;

void kockCurve(int,Roll,Roll);

int main(){

  Roll p1={0.0,0.0},p2={100.0,0.0};

  int n;
 
  scanf("%d\n",&n);
  
  printf("%f %f\n",p1.i,p1.j);

  kockCurve(n,p1,p2);

  printf("%f %f\n",p2.i,p2.j);
   
  return 0;
}

void kockCurve(int n,Roll p1,Roll p2){

  Roll s,t,u;

  if(n == 0)return; 
   
  s.i = (2 * p1.i + 1 * p2.i) / 3;

  s.j = (2 * p1.j + 1 * p2.j) / 3;

  t.i = (1 * p1.i + 2* p2.i) / 3;

  t.j = (1 * p1.j + 2 * p2.j) / 3;

  u.i = (t.i - s.i) / 2 - (t.j - s.j) / 2 * sqrt(3) + s.i;

  u.j = (t.i - s.i) / 2 * sqrt(3) + (t.j - s.j) / 2 + s.j;
 
  kockCurve(n-1,p1,s);

  printf("%f %f\n",s.i,s.j);

  kockCurve(n-1,s,u);

  printf("%f %f\n",u.i,u.j);

  kockCurve(n-1,u,t);

  printf("%f %f\n",t.i,t.j);

  kockCurve(n-1,t,p2);
  
}