#include <stdio.h>
#include <math.h>
 
typedef struct{
  double x;
  double y;
}XY;

void kock( int , XY , XY );
 
 
int main(){
 
  XY p1 = { 0.0 , 0.0 } , p2 = { 100.0 , 0.0 };
  int n;
 
  scanf("%d",&n);
 
  printf("%f %f\n",p1.x,p1.y);
  kock(n,p1,p2);
  printf("%f %f\n",p2.x,p2.y);
 
 return 0;
 
}
 
 
void kock( int n , XY p1 , XY p2 ){
 
  XY s,t,u;
 
  if( n == 0 ) return;
 
  s.x = ( p2.x - p1.x ) / 3 + p1.x;
  s.y = ( p2.y - p1.y ) / 3 + p1.y;
  t.x = 2 * ( p2.x - p1.x ) / 3 + p1.x;
  t.y = 2 * ( p2.y - p1.y ) / 3 + p1.y;
  u.x = ( t.x - s.x ) / 2 - sqrt(3.0) / 2 * ( t.y - s.y ) + s.x;
  u.y = ( t.y - s.y ) / 2 + sqrt(3.0) / 2 * ( t.x - s.x ) + s.y;
 
 
  kock( n-1 , p1 , s );
  printf("%f %f\n",s.x,s.y);
   
  kock( n-1 , s , u );
  printf("%f %f\n",u.x,u.y);
   
  kock( n-1 , u ,t );
  printf("%f %f\n",t.x,t.y);
 
  kock( n-1 , t , p2 );

}