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

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

void shori(int,POINT,POINT);

int main(){
  POINT a,b;
  int n;
  scanf("%d",&n);
  if(n>6||n<0) exit(2);
  a.x=0;
  a.y=0;
  b.x=100;
  b.y=0;
  printf("%.8f %.8f\n",a.x,a.y);
  shori(n,a,b);
  printf("%.8f %.8f\n",b.x,b.y);
  
  return 0;
}

void shori(int n,POINT a,POINT b){
  POINT m,k,l;
  double t=M_PI*60/180;
  if(n==0)return ;
  m.x=(2*a.x+1*b.x)/3;
  m.y=(2*a.y+1*b.y)/3;
  k.x=(1*a.x+2*b.x)/3;
  k.y=(1*a.y+2*b.y)/3;
  l.x=(k.x-m.x)* cos(t) - (k.y-m.y)* sin(t) + m.x;
  l.y=(k.x-m.x)* sin(t) + (k.y-m.y)* cos(t) + m.y;

  shori(n-1,a,m);
  printf("%.8f %.8f\n",m.x,m.y);
  shori(n-1,m,l);
  printf("%.8f %.8f\n",l.x,l.y);
  shori(n-1,l,k);
  printf("%.8f %.8f\n",k.x,k.y);
  shori(n-1,k,b);
}

