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

int n;
double Koch(int n,double lx,double ly,double rx,double ry)
{
  if(n!=0)
  {
    double p[3][2];
    p[0][0]=(2*lx+rx)/3;
    p[0][1]=(2*ly+ry)/3;
    p[2][0]=(lx+2*rx)/3;
    p[2][1]=(ly+2*ry)/3;

    p[1][0]=(p[2][0]-p[0][0])/2-(p[2][1]-p[0][1])*sqrt(3)/2+p[0][0];
    p[1][1]=(p[2][0]-p[0][0])*sqrt(3)/2+(p[2][1]-p[0][1])/2+p[0][1];
  
    Koch(n-1,lx,ly,p[0][0],p[0][1]);
    printf("%.8f %.8f\n",p[0][0],p[0][1]);
    Koch(n-1,p[0][0],p[0][1],p[1][0],p[1][1]);
    printf("%.8f %.8f\n",p[1][0],p[1][1]);
    Koch(n-1,p[1][0],p[1][1],p[2][0],p[2][1]); 
    printf("%.8f %.8f\n",p[2][0],p[2][1]);
    Koch(n-1,p[2][0],p[2][1],rx,ry); 
  }
  if(n==0)
      return 0;
  
}
int main()
{
  scanf("%d",&n);
  printf("%.8f %.8f\n",0.0,0.0);
  Koch(n,0,0,100,0);
  printf("%.8f %.8f\n",100.0,0.0);
  return 0;
}

