n = int(input())

def three_points(p1,p2):
    q1 = ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3)
    q2 = ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3)
    dx,dy = p2[0]-p1[0], p2[1]-p1[1]
    q3 = (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx)
    return [q1,q3,q2]

m = [(0,0),(100,0)]
for i in range(n):
    tmpm = []
    for j in range(len(m)-1):
        tmpm += [m[j]] + three_points(m[j],m[j+1])
    tmpm += [m[-1]]
    m = tmpm

for x in m:
    print(x[0], x[1]) n = int(input()) n int(input()) int input() input def three_points(p1,p2):
    q1 = ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3)
    q2 = ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3)
    dx,dy = p2[0]-p1[0], p2[1]-p1[1]
    q3 = (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx)
    return [q1,q3,q2] three_points q1 = ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3) q1 ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3) (2*p1[0]+p2[0])/3 2*p1[0]+p2[0] 2*p1[0] 2 p1[0] p1 0 p2[0] p2 0 3 (2*p1[1]+p2[1])/3 2*p1[1]+p2[1] 2*p1[1] 2 p1[1] p1 1 p2[1] p2 1 3 q2 = ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3) q2 ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3) (p1[0]+2*p2[0])/3 p1[0]+2*p2[0] p1[0] p1 0 2*p2[0] 2 p2[0] p2 0 3 (p1[1]+2*p2[1])/3 p1[1]+2*p2[1] p1[1] p1 1 2*p2[1] 2 p2[1] p2 1 3 dx,dy = p2[0]-p1[0], p2[1]-p1[1] dx p2[0]-p1[0] p2[0] p2 0 p1[0] p1 0 dy p2[1]-p1[1] p2[1] p2 1 p1[1] p1 1 q3 = (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx) q3 (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx) p1[0]+dx/2-3**0.5/6*dy p1[0]+dx/2 p1[0] p1 0 dx/2 dx 2 3**0.5/6*dy 3**0.5/6 3**0.5 3 0.5 6 dy p1[1]+dy/2+3**0.5/6*dx p1[1]+dy/2 p1[1] p1 1 dy/2 dy 2 3**0.5/6*dx 3**0.5/6 3**0.5 3 0.5 6 dx return [q1,q3,q2] [q1,q3,q2] q1 q3 q2 p1 p1 p2 p2 m = [(0,0),(100,0)] m [(0,0),(100,0)] (0,0) 0 0 (100,0) 100 0 for i in range(n):
    tmpm = []
    for j in range(len(m)-1):
        tmpm += [m[j]] + three_points(m[j],m[j+1])
    tmpm += [m[-1]]
    m = tmpm i range(n) range n tmpm = [] tmpm [] for j in range(len(m)-1):
        tmpm += [m[j]] + three_points(m[j],m[j+1])
     j range(len(m)-1) range len(m)-1 len(m) len m 1 tmpm += [m[j]] + three_points(m[j],m[j+1]) tmpm [m[j]] + three_points(m[j],m[j+1]) [m[j]] m[j] m j three_points(m[j],m[j+1]) three_points m[j] m j m[j+1] m j+1 j 1 tmpm += [m[-1]] tmpm [m[-1]] m[-1] m -1 m = tmpm m tmpm for x in m:
    print(x[0], x[1]) x m print(x[0], x[1]) print x[0] x 0 x[1] x 1 tmpm += [m[-1]] [m[-1]] tmpm def three_points(p1,p2):
    q1 = ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3)
    q2 = ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3)
    dx,dy = p2[0]-p1[0], p2[1]-p1[1]
    q3 = (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx)
    return [q1,q3,q2] def three_points(p1,p2):
    q1 = ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3)
    q2 = ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3)
    dx,dy = p2[0]-p1[0], p2[1]-p1[1]
    q3 = (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx)
    return [q1,q3,q2] three_points n = int(input()) int(input()) n tmpm += [m[j]] + three_points(m[j],m[j+1]) [m[j]] + three_points(m[j],m[j+1]) tmpm tmpm = [] [] tmpm m = [(0,0),(100,0)] [(0,0),(100,0)] m m = tmpm tmpm m
n = int(input())

def three_points(p1,p2):
    q1 = ((2*p1[0]+p2[0])/3, (2*p1[1]+p2[1])/3)
    q2 = ((p1[0]+2*p2[0])/3, (p1[1]+2*p2[1])/3)
    dx,dy = p2[0]-p1[0], p2[1]-p1[1]
    q3 = (p1[0]+dx/2-3**0.5/6*dy, p1[1]+dy/2+3**0.5/6*dx)
    return [q1,q3,q2]

m = [(0,0),(100,0)]
for i in range(n):
    tmpm = []
    for j in range(len(m)-1):
        tmpm += [m[j]] + three_points(m[j],m[j+1])
    tmpm += [m[-1]]
    m = tmpm

for x in m:
    print(x[0], x[1])
