import math
def kock(n,p1,p2):
    a=math.radians(60)
    if n==0:
        return 0
    s=[(2*p1[0]+p2[0])/3,(2*p1[1]+p2[1])/3]
    t=[(p1[0]+2*p2[0])/3,(p1[1]+2*p2[1])/3]
    u=[((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]]
    kock(n-1,p1,s)
    print(" ".join(map(str,s)))
    kock(n-1,s,u)
    print(" ".join(map(str,u)))
    kock(n-1,u,t)
    print(" ".join(map(str,t)))
    kock(n-1,t,p2)
n=int(input())
start=[float(0),float(0)]
end=[float(100),float(0)]
print(" ".join(map(str,start)))
kock(n,start,end)
print(" ".join(map(str,end))) import math math def kock(n,p1,p2):
    a=math.radians(60)
    if n==0:
        return 0
    s=[(2*p1[0]+p2[0])/3,(2*p1[1]+p2[1])/3]
    t=[(p1[0]+2*p2[0])/3,(p1[1]+2*p2[1])/3]
    u=[((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]]
    kock(n-1,p1,s)
    print(" ".join(map(str,s)))
    kock(n-1,s,u)
    print(" ".join(map(str,u)))
    kock(n-1,u,t)
    print(" ".join(map(str,t)))
    kock(n-1,t,p2) kock a=math.radians(60) a math.radians(60) math.radians math radians 60 if n==0:
        return 0
     n==0 n 0 return 0 0 s=[(2*p1[0]+p2[0])/3,(2*p1[1]+p2[1])/3] s [(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 t=[(p1[0]+2*p2[0])/3,(p1[1]+2*p2[1])/3] t [(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 u=[((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]] u [((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]] ((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0] (t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a) (t[0]-s[0])*math.cos(a) t[0]-s[0] t[0] t 0 s[0] s 0 math.cos(a) math.cos math cos a (t[1]-s[1])*math.sin(a) t[1]-s[1] t[1] t 1 s[1] s 1 math.sin(a) math.sin math sin a s[0] s 0 (t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1] (t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a) (t[0]-s[0])*math.sin(a) t[0]-s[0] t[0] t 0 s[0] s 0 math.sin(a) math.sin math sin a (t[1]-s[1])*math.cos(a) t[1]-s[1] t[1] t 1 s[1] s 1 math.cos(a) math.cos math cos a s[1] s 1 kock(n-1,p1,s) kock n-1 n 1 p1 s print(" ".join(map(str,s))) print " ".join(map(str,s)) " ".join " " join map(str,s) map str s kock(n-1,s,u) kock n-1 n 1 s u print(" ".join(map(str,u))) print " ".join(map(str,u)) " ".join " " join map(str,u) map str u kock(n-1,u,t) kock n-1 n 1 u t print(" ".join(map(str,t))) print " ".join(map(str,t)) " ".join " " join map(str,t) map str t kock(n-1,t,p2) kock n-1 n 1 t p2 n n p1 p1 p2 p2 n=int(input()) n int(input()) int input() input start=[float(0),float(0)] start [float(0),float(0)] float(0) float 0 float(0) float 0 end=[float(100),float(0)] end [float(100),float(0)] float(100) float 100 float(0) float 0 print(" ".join(map(str,start))) print " ".join(map(str,start)) " ".join " " join map(str,start) map str start kock(n,start,end) kock n start end print(" ".join(map(str,end))) print " ".join(map(str,end)) " ".join " " join map(str,end) map str end def kock(n,p1,p2):
    a=math.radians(60)
    if n==0:
        return 0
    s=[(2*p1[0]+p2[0])/3,(2*p1[1]+p2[1])/3]
    t=[(p1[0]+2*p2[0])/3,(p1[1]+2*p2[1])/3]
    u=[((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]]
    kock(n-1,p1,s)
    print(" ".join(map(str,s)))
    kock(n-1,s,u)
    print(" ".join(map(str,u)))
    kock(n-1,u,t)
    print(" ".join(map(str,t)))
    kock(n-1,t,p2) def kock(n,p1,p2):
    a=math.radians(60)
    if n==0:
        return 0
    s=[(2*p1[0]+p2[0])/3,(2*p1[1]+p2[1])/3]
    t=[(p1[0]+2*p2[0])/3,(p1[1]+2*p2[1])/3]
    u=[((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]]
    kock(n-1,p1,s)
    print(" ".join(map(str,s)))
    kock(n-1,s,u)
    print(" ".join(map(str,u)))
    kock(n-1,u,t)
    print(" ".join(map(str,t)))
    kock(n-1,t,p2) kock start=[float(0),float(0)] [float(0),float(0)] start n=int(input()) int(input()) n end=[float(100),float(0)] [float(100),float(0)] end
import math
def kock(n,p1,p2):
    a=math.radians(60)
    if n==0:
        return 0
    s=[(2*p1[0]+p2[0])/3,(2*p1[1]+p2[1])/3]
    t=[(p1[0]+2*p2[0])/3,(p1[1]+2*p2[1])/3]
    u=[((t[0]-s[0])*math.cos(a)-(t[1]-s[1])*math.sin(a))+s[0],(t[0]-s[0])*math.sin(a)+(t[1]-s[1])*math.cos(a)+s[1]]
    kock(n-1,p1,s)
    print(" ".join(map(str,s)))
    kock(n-1,s,u)
    print(" ".join(map(str,u)))
    kock(n-1,u,t)
    print(" ".join(map(str,t)))
    kock(n-1,t,p2)
n=int(input())
start=[float(0),float(0)]
end=[float(100),float(0)]
print(" ".join(map(str,start)))
kock(n,start,end)
print(" ".join(map(str,end)))
