# pascal triangle
# pas_tri(3) => [[1],[1,2,1],[1,3,3,1]]
def pas_tri(n)
    arr = [[1]]
    (n-1).times do
        newarr = []
        # got creative
        newarr << arr.last.inject(0) do |a, b|
            newarr << a + b
            b
        end
        arr << newarr
    end
    arr
end

# pascal pyramid, only nth layer
# pas_pym_nth(3) => [[1],[2,2],[1,2,1]]
def pas_pym_nth(n)
    arr = pas_tri(n)
    arr.last.map.with_index do |a, i|
        arr[i].map { |j| j * a }
    end
end

#puts(pas_pym_nth(gets.chomp.to_i).map do |a| a.join(" ") end)
puts(pas_pym_nth(14).map do |a| a.join(" ") end)