include Math
THETA = PI/3

def to_fs(v1, v2)
	"#{v1} #{v2}"
end

def koch(l,r,n)
	return if n==0
	d1 = {x: (2*l[:x] + r[:x])/3, y: (2*l[:y] + r[:y])/3}
	d2 = {x: (l[:x] + 2*r[:x])/3, y: (l[:y] + 2*r[:y])/3}
	top = {x: cos(THETA)*(d2[:x]-d1[:x]) + -sin(THETA)*(d2[:y]-d1[:y]) + d1[:x],
	       y: sin(THETA)*(d2[:x]-d1[:x]) + cos(THETA)*(d2[:y]-d1[:y]) + d1[:y]}
	koch(l, d1, n-1)
	puts to_fs(d1[:x], d1[:y])
	koch(d1, top, n-1)
	puts to_fs(top[:x], top[:y])
	koch(top, d2, n-1)
	puts to_fs(d2[:x], d2[:y])
	koch(d2, r, n-1)
end

n = gets.chomp.to_i
l={x: 0.0, y: 0.0}; r={x: 100.0, y: 0.0}
puts to_fs(l[:x], l[:y])
koch(l, r, n)
puts to_fs(r[:x], r[:y])

