Selezioni nazionali IOI 2002

Specchio (SPEC, D=3)

Il problema

Un albero è formato da una radice e da un insieme finito e ordinato (eventualmente vuoto) di figli, che sono anch'essi alberi. Ad esempio, la Figura 1 rappresenta un albero: per convenzione, la radice viene disegnata in cima (cioè al contrario rispetto agli alberi veri). Come ogni albero, lo potete descrivere dicendo quanti figli ha la radice (in questo caso, quattro) e poi descrivendo uno a uno, nell'ordine da sinistra a destra, i quattro sottoalberi. In questo modo, ad esempio, l'albero in Figura 1 sarebbe identificato dalla seguente sequenza:

4 2 0 3 0 0 1 0 0 0 0
	
Un albero
Figura 1. Un albero.

Infatti, l'albero ha quattro figli sotto la radice, per cui il primo numero è 4. D'altra parte, 2 0 3 0 0 1 0 è la descrizione del primo figlio, mentre gli ultimi tre figli sono ciascuno descritti da 0 (dato che non hanno figli).

Supponete di guardare l'albero riflesso in uno specchio. L'ordine dei figli di ciascun nodo risulta invertito. Per esempio, l'albero di Figura 1 appare come in Figura 2.

Un albero specchiato
Figura 2. L'albero di Figura 1 allo specchio.

Questo nuovo albero è descritto dalla sequenza

4 0 0 0 2 3 1 0 0 0 0
	

Dati in input

Il file di input, di nome input.txt, contiene una sola riga con una sequenza di interi non negativi, separati da uno spazio. La sequenza descrive correttamente un albero: quindi il primo numero è il numero di figli della radice, ed è seguito dalle descrizioni dei figli, uno dopo l'altro, da sinistra a destra.

Dati in output

Il file di output, di nome output.txt, contiene una sola riga, costituita da una sequenza di interi non negativi separati da uno o più spazi. Questa sequenza è la descrizione dell'albero dato in input visto allo specchio.

Assunzioni

Esempio di input/output

File input.txt

	4 2 0 3 0 0 1 0 0 0 0
	

File output.txt

	4 0 0 0 2 3 1 0 0 0 0