#include <stdio.h>
#include <math.h>
 
typedef struct{
  double x;
  double y;
}Data;
 
void kock(int, Data, Data);
 
int main() {
  int i,n ;
  Data d1 = {0.0, 0.0};
  Data d2 = {100.0, 0.0};
 
  scanf("%d", &n);
 
  printf("%f %f\n", d1.x, d1.y);
  kock(n, d1, d2);
  printf("%f %f\n", d2.x, d2.y);
 
  return 0;
} 
 
void kock(int n, Data d1, Data d2){
  Data s, t, u;
 
  if(n == 0) return;
  
  s.x = (2*d1.x + 1*d2.x) / 3.0;
  s.y = (2*d1.y + 1*d2.y) / 3.0;
 
  t.x = (1*d1.x + 2*d2.x) / 3.0;
  t.y = (1*d1.y + 2*d2.y) / 3.0;
 
  u.x = (t.x-s.x) * 0.5 - (t.y-s.y) * (sqrt(3)/2) + s.x;
  u.y = (t.x-s.x) * (sqrt(3)/2) + (t.y-s.y) * 0.5 + s.y;
 
 
  kock(n-1, d1, 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, d2);
 
  return ;
 
}