import math

def koch(n, p1, p2):
    if n == 0:
        return
    
    sx = 2*p1[0]/3 + p2[0]/3
    sy = 2*p1[1]/3 + p2[1]/3
    tx = p1[0]/3 + 2*p2[0]/3
    ty = p1[1]/3 + 2*p2[1]/3
    ux = (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx
    uy = (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy
    koch(n-1, p1, [sx, sy])
    print(sx, sy)
    koch(n-1, [sx, sy], [ux, uy])
    print(ux, uy)
    koch(n-1, [ux, uy], [tx, ty])
    print(tx, ty)
    koch(n-1, [tx, ty], p2)
    
    
    
    
    
    
n = int(input())
#問題文より，　端点がp1 = (0,0), p2 =(100,0)と指定されている
p1 = [0, 0]
p2 = [100, 0]
print(p1[0], p1[1])
koch(n, p1, p2)
print(p2[0], p2[1]) import math math def koch(n, p1, p2):
    if n == 0:
        return
    
    sx = 2*p1[0]/3 + p2[0]/3
    sy = 2*p1[1]/3 + p2[1]/3
    tx = p1[0]/3 + 2*p2[0]/3
    ty = p1[1]/3 + 2*p2[1]/3
    ux = (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx
    uy = (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy
    koch(n-1, p1, [sx, sy])
    print(sx, sy)
    koch(n-1, [sx, sy], [ux, uy])
    print(ux, uy)
    koch(n-1, [ux, uy], [tx, ty])
    print(tx, ty)
    koch(n-1, [tx, ty], p2)
    
    
    
    
    
     koch if n == 0:
        return
    
     n == 0 n 0 return sx = 2*p1[0]/3 + p2[0]/3 sx 2*p1[0]/3 + p2[0]/3 2*p1[0]/3 2*p1[0] 2 p1[0] p1 0 3 p2[0]/3 p2[0] p2 0 3 sy = 2*p1[1]/3 + p2[1]/3 sy 2*p1[1]/3 + p2[1]/3 2*p1[1]/3 2*p1[1] 2 p1[1] p1 1 3 p2[1]/3 p2[1] p2 1 3 tx = p1[0]/3 + 2*p2[0]/3 tx p1[0]/3 + 2*p2[0]/3 p1[0]/3 p1[0] p1 0 3 2*p2[0]/3 2*p2[0] 2 p2[0] p2 0 3 ty = p1[1]/3 + 2*p2[1]/3 ty p1[1]/3 + 2*p2[1]/3 p1[1]/3 p1[1] p1 1 3 2*p2[1]/3 2*p2[1] 2 p2[1] p2 1 3 ux = (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx ux (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) (tx - sx)*math.cos(math.radians(60)) tx - sx tx sx math.cos(math.radians(60)) math.cos math cos math.radians(60) math.radians math radians 60 (ty - sy)*math.sin(math.radians(60)) ty - sy ty sy math.sin(math.radians(60)) math.sin math sin math.radians(60) math.radians math radians 60 sx uy = (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy uy (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) (tx - sx)*math.sin(math.radians(60)) tx - sx tx sx math.sin(math.radians(60)) math.sin math sin math.radians(60) math.radians math radians 60 (ty - sy)*math.cos(math.radians(60)) ty - sy ty sy math.cos(math.radians(60)) math.cos math cos math.radians(60) math.radians math radians 60 sy koch(n-1, p1, [sx, sy]) koch n-1 n 1 p1 [sx, sy] sx sy print(sx, sy) print sx sy koch(n-1, [sx, sy], [ux, uy]) koch n-1 n 1 [sx, sy] sx sy [ux, uy] ux uy print(ux, uy) print ux uy koch(n-1, [ux, uy], [tx, ty]) koch n-1 n 1 [ux, uy] ux uy [tx, ty] tx ty print(tx, ty) print tx ty koch(n-1, [tx, ty], p2) koch n-1 n 1 [tx, ty] tx ty p2 n n p1 p1 p2 p2 n = int(input()) n int(input()) int input() input p1 = [0, 0] p1 [0, 0] 0 0 p2 = [100, 0] p2 [100, 0] 100 0 print(p1[0], p1[1]) print p1[0] p1 0 p1[1] p1 1 koch(n, p1, p2) koch n p1 p2 print(p2[0], p2[1]) print p2[0] p2 0 p2[1] p2 1 p1 = [0, 0] [0, 0] p1 p2 = [100, 0] [100, 0] p2 def koch(n, p1, p2):
    if n == 0:
        return
    
    sx = 2*p1[0]/3 + p2[0]/3
    sy = 2*p1[1]/3 + p2[1]/3
    tx = p1[0]/3 + 2*p2[0]/3
    ty = p1[1]/3 + 2*p2[1]/3
    ux = (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx
    uy = (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy
    koch(n-1, p1, [sx, sy])
    print(sx, sy)
    koch(n-1, [sx, sy], [ux, uy])
    print(ux, uy)
    koch(n-1, [ux, uy], [tx, ty])
    print(tx, ty)
    koch(n-1, [tx, ty], p2)
    
    
    
    
    
     def koch(n, p1, p2):
    if n == 0:
        return
    
    sx = 2*p1[0]/3 + p2[0]/3
    sy = 2*p1[1]/3 + p2[1]/3
    tx = p1[0]/3 + 2*p2[0]/3
    ty = p1[1]/3 + 2*p2[1]/3
    ux = (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx
    uy = (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy
    koch(n-1, p1, [sx, sy])
    print(sx, sy)
    koch(n-1, [sx, sy], [ux, uy])
    print(ux, uy)
    koch(n-1, [ux, uy], [tx, ty])
    print(tx, ty)
    koch(n-1, [tx, ty], p2)
    
    
    
    
    
     koch n = int(input()) int(input()) n
import math

def koch(n, p1, p2):
    if n == 0:
        return
    
    sx = 2*p1[0]/3 + p2[0]/3
    sy = 2*p1[1]/3 + p2[1]/3
    tx = p1[0]/3 + 2*p2[0]/3
    ty = p1[1]/3 + 2*p2[1]/3
    ux = (tx - sx)*math.cos(math.radians(60))  - (ty - sy)*math.sin(math.radians(60)) + sx
    uy = (tx - sx)*math.sin(math.radians(60)) + (ty - sy)*math.cos(math.radians(60)) + sy
    koch(n-1, p1, [sx, sy])
    print(sx, sy)
    koch(n-1, [sx, sy], [ux, uy])
    print(ux, uy)
    koch(n-1, [ux, uy], [tx, ty])
    print(tx, ty)
    koch(n-1, [tx, ty], p2)
    
    
    
    
    
    
n = int(input())
#問題文より，　端点がp1 = (0,0), p2 =(100,0)と指定されている
p1 = [0, 0]
p2 = [100, 0]
print(p1[0], p1[1])
koch(n, p1, p2)
print(p2[0], p2[1])
