Dado um array de n inteiros, pretende-se encontrar a subsequência crescente mais longa desse array. Se existirem várias subsequências possíveis com esse comprimento, pode apresentar qualquer uma delas.
Uma subsequência de um array é obtida ao remover alguns (possivelmente nenhum) elementos do array, sem alterar a ordem dos que restam. Por exemplo, se o array for , então é uma subsequência de , mas não é uma subsequência de , pois a ordem dos elementos não é preservada.
💡
Uma subsequência crescente de um array é aquela em que os elementos estão em ordem ascendente. Por exemplo, se o array for , então é uma subsequência crescente de , mas não é, pois os elementos não estão em ordem crescente.
Entrada
A primeira linha da entrada contém um único inteiro n (1 ≤ n ≤ 100 000), o comprimento do array.
A segunda linha contém n inteiros separados por espaço (), representando os elementos do array.
Saída
A primeira linha deve conter um único inteiro k - o comprimento da subsequência crescente mais longa do array.
A segunda linha deve conter k inteiros separados por espaço, que representem a subsequência mais longa. Se existirem várias respostas possíveis, pode apresentar qualquer uma delas.
Exemplos
Entrada
Saída
8
1 3 2 4 5 2 6 5
5
1 2 4 5 6
6
10 9 2 5 3 7
3
2 5 7
Nota
No segundo exemplo, a subsequência também é uma subsequência crescente válida de comprimento 3.