1.

/* Angewandte Mathematik, SS09, IFB 2C 
* ACM Problem #122 (Trees on the level)
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=58
*
* @author Dennis Wilfert
* @author Johann Studt
* @version 1.0, 06/14/2009
*
* Status : Accepted
* Runtime: 0.120
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.TreeMap;


public class Main {

public static void main(String[] args) {

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Scanner scanner = new Scanner(reader);

// StringBuilder für die Ausgabe
StringBuilder output = new StringBuilder();
// StringBuilder für einen Baum
StringBuilder current;

// Aktuell gelesene Zeile
String read;
// Nummer mit der der aktuelle Knoten benannt ist
int number;
// Aktueller Knoten als char -Array
char[] chr;
// Aktueller Knoten
long pos;
// Multiplikator
long mult;
// Zeigt an ob der aktuelle Baum ungültig ist
boolean wrong = false;
// Map in der die Werte des Baums gespeichert werden
TreeMap<Long, Integer> map = new TreeMap<Long, Integer>();

int i,j;

while(scanner.hasNext()){

// Wird durchlaufen wenn ein Knoten mehrfach vorkommt
if(wrong){
// Eingabe durchlaufen bis der Baum zuende ist
while(scanner.next().length()!=2);
map.clear();
wrong = false;
output.append("not complete\n");
}
else{

read = scanner.next();

// Wenn der Baum zuende ist
if(read.length()==2){
// Der Baum hat keine Knoten
if(map.isEmpty()){
output.append("not complete\n");
}
else{

current = new StringBuilder();
// Die keys von Map durchlaufen. Der Baum ist gültig wenn zum aktuellen key
// der aktuelle key/10 existiert.
for(long k: map.keySet()){

if(map.containsKey(k/10)){
current.append(map.get(k));
current.append(" ");
}
else{
current = new StringBuilder();
current.append("not complete ");
break;
}
}
current.deleteCharAt(current.length()-1);
output.append(current);
output.append("\n");
map.clear();
}

}

else{
// Name des Knoten
j =read.indexOf(",");
number = Integer.parseInt(read.substring(1, j));

chr = read.toCharArray();
// Multiplikator
mult = 1;
// Position
pos = 0;
// Die Eingabe des aktuellen Knoten wird von hinten bis zum ',' durchlaufen
// dabei wird L durch 1 ersetzt und R durch 2. Das 1. L/R wird mit 1 multipliziert,
// dass 2. mit 10 usw.
for(i = chr.length-2; i>j; i--){
if(chr[i] == 'L'){
pos += 1*mult;
}
else{
pos += 2*mult;
}
mult*=10;
}
// pos und number zur map hinzufügen
if(!map.containsKey(pos))
map.put(pos, number);
else{
wrong = true;
}
}
}
}
System.out.print(output);
}

}