import math

def koch(start, end, n, r):
    if n > 0:
        #途中の頂点をa, b, cとする
        a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3]
        c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3]

        x = c[0] - a[0]
        y = c[1] - a[1]

        b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]]

        koch(start, a, n-1, r)
        koch(a, b, n-1, r)
        koch(b, c, n-1, r)
        koch(c, end, n-1, r)

    else:
        r.append(start)

n = int(input())

r = []

koch([0, 0], [100, 0], n, r)
r.append([100, 0])

for rr in r:
    print(str(rr[0]) + ' ' + str(rr[1])) import math math def koch(start, end, n, r):
    if n > 0:
        #途中の頂点をa, b, cとする
        a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3]
        c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3]

        x = c[0] - a[0]
        y = c[1] - a[1]

        b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]]

        koch(start, a, n-1, r)
        koch(a, b, n-1, r)
        koch(b, c, n-1, r)
        koch(c, end, n-1, r)

    else:
        r.append(start) koch if n > 0:
        #途中の頂点をa, b, cとする
        a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3]
        c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3]

        x = c[0] - a[0]
        y = c[1] - a[1]

        b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]]

        koch(start, a, n-1, r)
        koch(a, b, n-1, r)
        koch(b, c, n-1, r)
        koch(c, end, n-1, r)

    else:
        r.append(start) n > 0 n 0 a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3] a [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3] (start[0]*2 + end[0]*1) / 3 start[0]*2 + end[0]*1 start[0]*2 start[0] start 0 2 end[0]*1 end[0] end 0 1 3 (start[1]*2 + end[1]*1) / 3 start[1]*2 + end[1]*1 start[1]*2 start[1] start 1 2 end[1]*1 end[1] end 1 1 3 c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3] c [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3] (start[0]*1 + end[0]*2) / 3 start[0]*1 + end[0]*2 start[0]*1 start[0] start 0 1 end[0]*2 end[0] end 0 2 3 (start[1]*1 + end[1]*2) / 3 start[1]*1 + end[1]*2 start[1]*1 start[1] start 1 1 end[1]*2 end[1] end 1 2 3 x = c[0] - a[0] x c[0] - a[0] c[0] c 0 a[0] a 0 y = c[1] - a[1] y c[1] - a[1] c[1] c 1 a[1] a 1 b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]] b [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]] x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0] x * math.cos(math.pi/3) - y * math.sin(math.pi/3) x * math.cos(math.pi/3) x math.cos(math.pi/3) math.cos math cos math.pi/3 math.pi math pi 3 y * math.sin(math.pi/3) y math.sin(math.pi/3) math.sin math sin math.pi/3 math.pi math pi 3 a[0] a 0 x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1] x * math.sin(math.pi/3) + y * math.cos(math.pi/3) x * math.sin(math.pi/3) x math.sin(math.pi/3) math.sin math sin math.pi/3 math.pi math pi 3 y * math.cos(math.pi/3) y math.cos(math.pi/3) math.cos math cos math.pi/3 math.pi math pi 3 a[1] a 1 koch(start, a, n-1, r) koch start a n-1 n 1 r koch(a, b, n-1, r) koch a b n-1 n 1 r koch(b, c, n-1, r) koch b c n-1 n 1 r koch(c, end, n-1, r) koch c end n-1 n 1 r r.append(start) r.append r append start start start end end n n r r n = int(input()) n int(input()) int input() input r = [] r [] koch([0, 0], [100, 0], n, r) koch [0, 0] 0 0 [100, 0] 100 0 n r r.append([100, 0]) r.append r append [100, 0] 100 0 for rr in r:
    print(str(rr[0]) + ' ' + str(rr[1])) rr r print(str(rr[0]) + ' ' + str(rr[1])) print str(rr[0]) + ' ' + str(rr[1]) str(rr[0]) + ' ' str(rr[0]) str rr[0] rr 0 ' ' str(rr[1]) str rr[1] rr 1 def koch(start, end, n, r):
    if n > 0:
        #途中の頂点をa, b, cとする
        a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3]
        c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3]

        x = c[0] - a[0]
        y = c[1] - a[1]

        b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]]

        koch(start, a, n-1, r)
        koch(a, b, n-1, r)
        koch(b, c, n-1, r)
        koch(c, end, n-1, r)

    else:
        r.append(start) def koch(start, end, n, r):
    if n > 0:
        #途中の頂点をa, b, cとする
        a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3]
        c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3]

        x = c[0] - a[0]
        y = c[1] - a[1]

        b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]]

        koch(start, a, n-1, r)
        koch(a, b, n-1, r)
        koch(b, c, n-1, r)
        koch(c, end, n-1, r)

    else:
        r.append(start) koch r = [] [] r n = int(input()) int(input()) n
import math

def koch(start, end, n, r):
    if n > 0:
        #途中の頂点をa, b, cとする
        a = [(start[0]*2 + end[0]*1) / 3, (start[1]*2 + end[1]*1) / 3]
        c = [(start[0]*1 + end[0]*2) / 3, (start[1]*1 + end[1]*2) / 3]

        x = c[0] - a[0]
        y = c[1] - a[1]

        b = [x * math.cos(math.pi/3) - y * math.sin(math.pi/3) + a[0], x * math.sin(math.pi/3) + y * math.cos(math.pi/3) + a[1]]

        koch(start, a, n-1, r)
        koch(a, b, n-1, r)
        koch(b, c, n-1, r)
        koch(c, end, n-1, r)

    else:
        r.append(start)

n = int(input())

r = []

koch([0, 0], [100, 0], n, r)
r.append([100, 0])

for rr in r:
    print(str(rr[0]) + ' ' + str(rr[1]))
