def convolução(f,g,n):
    return sum([f(i)*g(n-1-i) for i in range(n)])

def Escada(n):
    if n == 0:
        return 1
    return convolução(Escada,Escada,n)
    # # versão "por extenso":
    # soma = 0
    # for i in range(n):
    #     soma += Escada(i)*Escada(n-1-i)
    # return soma

def enumera_caminhos(n):
    if n == 0:
        return {""}
    resposta = set()
    for i in range(n):
        # i representa o ponto onde
        # encostamos na diagonal pela
        # primeira vez após o início
        antes = enumera_caminhos(i)
        depois = enumera_caminhos(n-1-i)
        for caminho_antes in antes:
            for caminho_depois in depois:
                resposta.add("→" + caminho_antes + "↑" + caminho_depois)
    return resposta
