1. 

/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10
* Problem: 11462 Age Sort
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=74&problem=2457&mosmsg=Submission+received+with+ID+8043192
*
* @author Viktoriya Ryabova
* @version 1.0, 06/28/2010
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 1.348
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
while(true){
int count = Integer.parseInt(in.readLine());
if (count==0)return;
StringTokenizer t = new StringTokenizer(in.readLine());

int [] input = new int [count];
for (int i = 0; i<count; i++){
input[i]= Integer.parseInt(t.nextToken());
}
int [] result = countingSort(input);

sb.append(result[0]);
for(int i=1; i<count; i++){
sb.append(" "+ result [i]);
}

System.out.println(sb);
sb.delete(0, sb.length());
}

}

public static int[] countingSort(int[] numbers) {
// Maximum der Zahlen berechnen
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
// wenn es größeres als das aktuelle gibt, ist das nun das neue größte
if (numbers[i] > max)
max = numbers[i];
}

// temporäres Array erzeugen mit: Länge = Maximum des Zahlenarrays + die "0"
int[] sortedNumbers = new int[max+1];

// Indizes des Zahlen-Arrays durchgehen
for (int i = 0; i < numbers.length; i++) {
// wir zählen, wie oft jede Zahl aus numbers vorkommt und
// speichern diese Anzahl in sortedNumbers[] bei Index number[i]
sortedNumbers[numbers[i]]++;
}

// insertPosition steht für die Schreib-Position im Ausgabe-Array
int insertPosition = 0;

// Indizes von sortedNumbers[] durchgehen, um zu sehen, wie oft jede Zahl vorkommt
for (int i = 0; i <= max; i++) {
// Anzahl von i durchgehen, um gleiche Zahlen hintereinander einzutragen
for (int j = 0; j < sortedNumbers[i]; j++) {
// das Zahlen-Array wird jetzt sortiert neu geschrieben für jedes
// Auftreten von i
numbers[insertPosition] = i;
insertPosition++;
}
}
return numbers;
}

}