Ordenação por mesclagem com restrição de memória

Kotlin Hard sorting

Tarefa «Ordenação por mesclagem com restrição de memória»

Dado um array de números inteiros. É necessário ordená-lo em ordem crescente, usando apenas O(1) de memória adicional (ou seja, sem usar arrays ou listas adicionais). É permitido apenas trocar elementos no array original. Implemente um algoritmo de ordenação por mesclagem in-place com abordagem iterativa (bottom-up). Imprima o array ordenado separado por espaços.

Formato de Entrada

A primeira linha contém um número inteiro N (1 ≤ N ≤ 10^5). A segunda linha contém N números inteiros, separados por espaços.

Formato de Saída

Uma única linha: N números inteiros, ordenados em ordem crescente, separados por espaços.

Exemplos

Exemplo 1

ENTRADA
1 42
SAÍDA
42

Exemplo 2

ENTRADA
6 6 5 4 3 2 1
SAÍDA
1 2 3 4 5 6

Exemplo 3

ENTRADA
3.0 4.0
SAÍDA
Invalid input

Exemplo 4

ENTRADA
6 4 2 2 8 3 3 1
SAÍDA
2 2 3 3 4 8
main.kt