#include<stdio.h>
#include<math.h>
typedef struct{
  double x;
  double y;
}point;
void kock(int, point, point);

int main(){

  int n;
  point p1, p2;

  scanf("%d", &n);
  p1.x = 0;
  p1.y = 0;
  p2.x = 100;
  p2.y = 0;
  printf("%.8f %.8f\n", p1.x, p1.y);
  kock(n, p1, p2);
  printf("%.8f %.8f\n",p2.x, p2.y);
  return 0;
}
void kock(int n,point p1,point p2){

  double rad = 60.0 * M_PI / 180.0;
  point a, b, c;

  if(n==0) return;

  a.x = (2*p1.x + p2.x) / 3;
  a.y = (2*p1.y + p2.y) / 3;
  b.x = (p1.x+2 * p2.x) / 3;
  b.y = (p1.y+2 * p2.y) / 3;
  c.x = (b.x-a.x) * cos(rad) - (b.y-a.y) * sin(rad) + a.x;
  c.y = (b.x-a.x) * sin(rad) + (b.y-a.y) * cos(rad) + a.y;

  kock(n-1, p1, a);
  printf("%.8f %.8f\n", a.x, a.y);
  kock(n-1, a, c);
  printf("%.8f %.8f\n", c.x, c.y);
  kock(n-1, c, b);
  printf("%.8f %.8f\n", b.x, b.y);
  kock(n-1, b, p2);
}

