import math
class Point(object):
     def __init__(self, x,y):
          self.x = x*1.0
          self.y = y*1.0
def Koch(n,p1,p2):
    s=Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3)
    t=Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3)
    u=Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y)
    if n==0:
        return
    Koch(n-1,p1,s)
    print s.x,s.y
    Koch(n-1,s,u)
    print u.x,u.y 
    Koch(n-1,u,t)
    print t.x,t.y
    Koch(n-1,t,p2)
n=input()
p1=Point(0,0)
p2=Point(100,0)
print p1.x,p1.y
Koch(n,p1,p2)
print p2.x,p2.y import math math class Point(object):
     def __init__(self, x,y):
          self.x = x*1.0
          self.y = y*1.0 Point def __init__(self, x,y):
          self.x = x*1.0
          self.y = y*1.0 __init__ self.x = x*1.0 self.x self x x*1.0 x 1.0 self.y = y*1.0 self.y self y y*1.0 y 1.0 self self x x y y object def Koch(n,p1,p2):
    s=Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3)
    t=Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3)
    u=Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y)
    if n==0:
        return
    Koch(n-1,p1,s)
    print s.x,s.y
    Koch(n-1,s,u)
    print u.x,u.y 
    Koch(n-1,u,t)
    print t.x,t.y
    Koch(n-1,t,p2) Koch s=Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3) s Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3) Point (2*p1.x+p2.x)/3 2*p1.x+p2.x 2*p1.x 2 p1.x p1 x p2.x p2 x 3 (2*p1.y+p2.y)/3 2*p1.y+p2.y 2*p1.y 2 p1.y p1 y p2.y p2 y 3 t=Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3) t Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3) Point (p1.x+2*p2.x)/3 p1.x+2*p2.x p1.x p1 x 2*p2.x 2 p2.x p2 x 3 (p1.y+2*p2.y)/3 p1.y+2*p2.y p1.y p1 y 2*p2.y 2 p2.y p2 y 3 u=Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y) u Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y) Point (t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x (t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60)) (t.x-s.x)*math.cos(math.radians(60)) t.x-s.x t.x t x s.x s x math.cos(math.radians(60)) math.cos math cos math.radians(60) math.radians math radians 60 (t.y-s.y)*math.sin(math.radians(60)) t.y-s.y t.y t y s.y s y math.sin(math.radians(60)) math.sin math sin math.radians(60) math.radians math radians 60 s.x s x (t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y (t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60)) (t.x-s.x)*math.sin(math.radians(60)) t.x-s.x t.x t x s.x s x math.sin(math.radians(60)) math.sin math sin math.radians(60) math.radians math radians 60 (t.y-s.y)*math.cos(math.radians(60)) t.y-s.y t.y t y s.y s y math.cos(math.radians(60)) math.cos math cos math.radians(60) math.radians math radians 60 s.y s y if n==0:
        return
     n==0 n 0 return Koch(n-1,p1,s) Koch n-1 n 1 p1 s print s.x s x s.y s y Koch(n-1,s,u) Koch n-1 n 1 s u print u.x u x u.y u y Koch(n-1,u,t) Koch n-1 n 1 u t print t.x t x t.y t y Koch(n-1,t,p2) Koch n-1 n 1 t p2 n n p1 p1 p2 p2 n=input() n input() input p1=Point(0,0) p1 Point(0,0) Point 0 0 p2=Point(100,0) p2 Point(100,0) Point 100 0 print p1.x p1 x p1.y p1 y Koch(n,p1,p2) Koch n p1 p2 print p2.x p2 x p2.y p2 y def Koch(n,p1,p2):
    s=Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3)
    t=Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3)
    u=Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y)
    if n==0:
        return
    Koch(n-1,p1,s)
    print s.x,s.y
    Koch(n-1,s,u)
    print u.x,u.y 
    Koch(n-1,u,t)
    print t.x,t.y
    Koch(n-1,t,p2) def Koch(n,p1,p2):
    s=Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3)
    t=Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3)
    u=Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y)
    if n==0:
        return
    Koch(n-1,p1,s)
    print s.x,s.y
    Koch(n-1,s,u)
    print u.x,u.y 
    Koch(n-1,u,t)
    print t.x,t.y
    Koch(n-1,t,p2) Koch p2=Point(100,0) Point(100,0) p2 class Point(object):
     def __init__(self, x,y):
          self.x = x*1.0
          self.y = y*1.0 class Point(object):
     def __init__(self, x,y):
          self.x = x*1.0
          self.y = y*1.0 Point p1=Point(0,0) Point(0,0) p1 n=input() input() n
import math
class Point(object):
     def __init__(self, x,y):
          self.x = x*1.0
          self.y = y*1.0
def Koch(n,p1,p2):
    s=Point((2*p1.x+p2.x)/3,(2*p1.y+p2.y)/3)
    t=Point((p1.x+2*p2.x)/3,(p1.y+2*p2.y)/3)
    u=Point((t.x-s.x)*math.cos(math.radians(60))-(t.y-s.y)*math.sin(math.radians(60))+s.x,(t.x-s.x)*math.sin(math.radians(60))+(t.y-s.y)*math.cos(math.radians(60))+s.y)
    if n==0:
        return
    Koch(n-1,p1,s)
    print s.x,s.y
    Koch(n-1,s,u)
    print u.x,u.y 
    Koch(n-1,u,t)
    print t.x,t.y
    Koch(n-1,t,p2)
n=input()
p1=Point(0,0)
p2=Point(100,0)
print p1.x,p1.y
Koch(n,p1,p2)
print p2.x,p2.y
