Jogo do Poder

Jonathan está empolgado com a nova sensação do momento: o Jogo do Poder. Este jogo é jogado em uma matriz de NN linhas e MM colunas, na qual cada célula possui um monstro. O monstro na linha ii e coluna jj possui poder Pi,jP_{i,j}.

No início do jogo, Jonathan escolhe um dos N×MN \times M monstros para jogar. O monstro escolhido por Jonathan se torna o herói do jogo e começa o jogo com o poder indicado em sua célula. Jonathan pode mover o herói ortogonalmente (isto é, para cima, baixo, direita ou esquerda) na matriz enquanto o herói estiver vivo. O herói não pode sair da matriz, mas pode visitar a mesma célula múltiplas vezes.

Toda vez que o herói entra em uma célula com um monstro vivo, ocorre uma batalha entre o herói e o monstro da célula. O herói ganha a batalha se, e somente se, o seu poder for maior ou igual ao poder do monstro. Caso contrário, o herói morre e perde o jogo em game over. Toda vez que o herói ganha uma batalha, o monstro derrotado morre (ou seja, a célula não possui mais nenhum monstro) e, como recompensa, o poder do monstro é somado ao poder do herói (ou seja, se o herói matar o monstro da célula (i,j)(i, j), o poder do herói aumenta em Pi,jP_{i,j}).

Jonathan percebeu que o jogo pode ser injusto: mesmo que ele jogue de maneira ótima, dependendo de sua escolha de herói, pode ser possível matar todos os monstros, apenas alguns ou até mesmo nenhum monstro.

Decidido a “platinar” o jogo, Jonathan precisa saber o poder máximo que cada herói consegue alcançar (ou seja, o poder máximo possível de ser atingido ao iniciar o jogo em cada célula da matriz) se o jogo for jogado de forma ótima. Felizmente, ele descobriu que os alunos da OBI (Organização dos Bons Informáticos) recentemente resolveram o Jogo da Vida, seu terceiro jogo favorito (atrás do Jogo do Poder e do Jogo de Corrida, claro), então ele pediu a sua ajuda novamente! Determine, para cada herói, o poder máximo que ele consegue alcançar caso Jonathan jogue de forma ótima.

Entrada

A primeira linha de entrada contém dois inteiros NN e MM, o número de linhas e o número de colunas da matriz, respectivamente.

As próximas NN linhas contém M inteiros cada. O jj-ésimo inteiro da ii-ésima linha contém o poder Pi,jP_{i,j} do monstro na ii-ésima linha e jj-ésima coluna.

Saída

O seu programa deverá imprimir NN linhas, cada uma contendo MM inteiros. O jj-ésimo inteiro da ii-ésima linha deve ser o poder máximo que Jonathan consegue alcançar caso ele escolha como herói o monstro da célula (i,j)(i, j) e jogue de maneira ótima.

Restrições

Atenção: Observe que não é possível declarar 100000×100000100\ 000 \times 100\ 000 inteiros (com matriz, vetor etc.) sem estourar o limite de memória (isto causaria erros no programa pois tentaria usar dezenas de GB de memória). Preste atenção ao limite N×M100000N \times M \leq 100\ 000, que garante que a matriz sempre terá no máximo 100000100\ 000 células.

Informações sobre a pontuação

A tarefa vale 100100 pontos. Estes pontos estão distribuídos em subtarefas, cada uma com suas restrições adicionais às definidas acima:

Seu programa pode resolver corretamente todas ou algumas das subtarefas (elas não precisam ser resolvidas em ordem). Sua pontuação final na tarefa é a soma dos pontos de todas as subtarefas resolvidas corretamente por alguma das suas submissões.

Exemplos

Exemplo de entrada 1

2 3
2 3 9
1 7 200

Exemplo de saída 1

6 6 22
1 22 222

Exemplo de entrada 2

1 7
6 3 10 1 20 7 7

Exemplo de saída 2

9 3 54 1 54 14 14

Exemplo de entrada 3

5 6
10 10 10 10 10 10
10 10 1 1 1 10
10 10 10 1 10 10
10 10 10 4 10 10
10 10 10 10 10 2

Exemplo de saída 3

250 250 250 250 250 250
250 250 8 8 8 250
250 250 250 8 250 250
250 250 250 8 250 250
250 250 250 250 250 2