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

int koch(int n, Point p1, Point p2){

    Point s,t,u;
    double degree = M_PI / 3;

    if(n == 0)
    {
      printf("%.8f %.8f\n", p2.x, p2.y);
      return;
    }

    s.x = (2 * p1.x + 1 * p2.x) / 3.0;
    s.y = (2 * p1.y + 1 * p2.y) / 3.0;
    t.x = (1 * p1.x + 2 * p2.x) / 3.0;
    t.y = (1 * p1.y + 2 * p2.y) / 3.0;
    u.x = (t.x - s.x) * cos(degree) - (t.y - s.y) * sin(degree) + s.x;
    u.y = (t.x - s.x) * sin(degree) + (t.y - s.y) * cos(degree) + s.y;

    koch(n-1,p1,s);  
    koch(n-1,s,u);
    koch(n-1,u,t);    
    koch(n-1,t,p2);
}
 
 
int main(){
    int n;
    Point p1,p2;
     
    p1.x = 0;
    p1.y = 0;
    p2.x = 100;
    p2.y = 0;
     
    scanf("%d",&n);

    printf("%.8f %.8f\n",p1.x,p1.y);
    koch(n,p1,p2);
     
    return 0;
}