#include <stdio.h>
#include <ctype.h>

#define MAX_N 1000

int main() {
    int n;
    if (scanf("%d", &n) != 1) { printf("Invalid input.\n"); return 0; }
    if (n < 1 || n > MAX_N) { printf("Invalid input.\n"); return 0; }

    int a[MAX_N];
    int invalid = 0;

    // Read n bid values as tokens; validate each token is a proper integer string
    // The statement says: if any bid contains an alphabet or special char, print "Invalid input."
    // Using scanf("%s") per-token to validate characters, then convert to int.
    for (int i = 0; i < n; i++) {
        char tok;
        if (scanf("%63s", tok) != 1) { printf("Invalid input.\n"); return 0; }

        // Validate token: optional leading '-' then all digits
        int j = 0;
        if (tok[j] == '-' || tok[j] == '+') j++;
        if (tok[j] == '\0') { invalid = 1; } // only sign is invalid
        for (; tok[j] != '\0'; j++) {
            if (!isdigit((unsigned char)tok[j])) { invalid = 1; break; }
        }

        // Early read int even if invalid, to consume input consistently
        int val = 0, k = (tok == '+' || tok == '-') ? 1 : 0;
        for (; tok[k] && isdigit((unsigned char)tok[k]); k++) {
            val = val * 10 + (tok[k] - '0');
        }
        if (tok == '-') val = -val;

        a[i] = val;
    }

    if (invalid) { printf("Invalid input.\n"); return 0; }

    // Manual bubble sort (no library support)
    for (int end = n - 1; end > 0; end--) {
        int swapped = 0;
        for (int i = 0; i < end; i++) {
            if (a[i] > a[i + 1]) { // as hinted: if (temp.data > index.data)
                int t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
                swapped = 1;
            }
        }
        if (!swapped) break;
    }

    // Print ascending order, space-separated
    for (int i = 0; i < n; i++) {
        if (i) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");
    return 0;
}