Problema G: ToPAS parking

Image topas_parking

Normalmente, nos parques de estacionamento dos centros comerciais, os lugares de estacionamento estão organizados em filas paralelas, duas a duas, com uma faixa de circulação entre cada par de filas. Nos parques mais sofisticados, existe um sistema de semáforos para facilitar a localização de lugares livres pelos condutores que querem estacionar. É muito simples: coloca-se um semáforo por cima de cada lugar de estacionamento. Quando o lugar está livre, o semáforo fica verde; quando está ocupado, fica vermelho.

O parque de estacionamento do futuro TopaShopping de Loulé usará uma organização de lugares revolucionária, suprimindo as faixas de circulação. Quer dizer, a placa de estacionamento estará dividida em células de estacionamento retangulares, todas contíguas, cada uma com um semáforo. É verdade que, havendo condutores desrespeitosos, alguns carros podem ficar bloqueados, isto é, impossibilitados de sair do parque. Além disso, pode acontecer que certas zonas do parque fiquem vazias mas inacessíveis, porque há carros estacionados rodeando essa zona completamente. Para facilitar a vida aos clientes que querem estacionar, ajudando-os a encontrar lugar para o carro, vão usar-se semáforos com três cores - verde, vermelho e amarelo - funcionando da seguinte forma:

Em cada momento, cada uma das células de estacionamento estará ocupada, livre, bloqueante ou isolada. Estará ocupada, com o semáforo vermelho, se lá estiver um carro parado; estará livre, com o semáforo verde, se estiver vazia mas não bloqueante nem isolada; estará bloqueante, com o semáforo amarelo, se estiver vazia mas, se estivesse ocupada, pelo menos uma das células adjacentes que estejam ocupadas ficaria com o respetivo carro bloqueado; estará isolada, com o semáforo apagado, se estiver livre mas inacessível a partir do exterior do parque.

Note que um carro pode estar bloqueado mesmo sem estar entalado entre quatro carros (um à frente, outro atrás, outro à esquerda e outro à direita). Na verdade estar bloqueado significa que os lugares adjacentes à frente, atrás, à esquerda e à direita estão todos ocupados ou isolados.

Note ainda que, não sendo o parque de estacionamento vedado, os carros que estacionarem nas filas das pontas nunca ficarão bloqueados. Além disso, pode-se entrar na superfície do parque por qualquer uma das células de estacionamento das filas das pontas, desde que estejam vazias. Logo, essas células nunca ficarão isoladas.

Tarefa

Por favor, escreva um programa que leia da consola a descrição do parque e os lugares ocupados e que escreva na consola o plano dos semáforos. O parque é retangular, de dimensões \(W\) e \(H\), < sendo \(W\) a medida do lado horizontal e \(H\) a medida do lado vertical, e cada lugar de estacionamento é representado por um par de coordenadas \(x\), \(y\), com \(0 \leq x < W\) e \(0 \leq y < H\). O plano dos semáforos é uma matriz com \(H\) linhas e \(W\) colunas, onde cada posição terá a cor do semáforo do lugar correspondente, com a seguinte codificação: apagado, 0; verde, 1; vermelho, 2; amarelo, 3.

Input

A primeira linha do input contém os valores de \(W\) e \(H\), por esta ordem. As restantes lin de cada lugar de estacionamento que está atualmente ocupado, sem repetições. O fim dos dados é assinalado por uma linha contendo duas vezes o número -1.

Restrições

\(1\leq W\leq 100\) Número de colunas
\(1\leq H \leq 100\) Número de linhas

Output

O output é a matriz com o plano dos semáforos, escrita linha a linha, com todos os números justapostos.

Exemplo

Input

8 6
0 0
1 0
3 0
4 0
5 0
6 0
2 1
5 1
6 1
2 2
4 2
5 2
6 2
1 3
2 3
3 3
5 3
7 3
3 4
6 4
0 5
2 5
5 5
7 5
-1 -1

Output

22122221
11200223
13202223
12223202
11321121
21211212


O input corresponde à seguinte configuração, ainda sem semáforos:

Image topas_parking_example_1

O output já assinala as cores, ficando a cinzento os lugares onde o semáforo está apagado:

Image topas_parking_example_2

Note que o sistema é prático mas não é perfeito. Quer dizer, não garante que um carro que estacione num lugar com luz verde não impeça outro carro de sair do parque. O sistema apenas assinala que um carro que estacionasse num lugar com luz amarela bloquearia pelo menos um dos carros estacionados nos lugares adjacentes.



ToPAS'2016