#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

typedef struct Node {
    int data;
    struct Node* next;
} Node;

// Function to check if input is a valid integer
int isValidInteger(char *str) {
    int i = 0;
    // Allow negative integers
    if (str[0] == '-') i = 1;
    for (; str[i] != '\0'; i++) {
        if (!isdigit(str[i])) return 0;
    }
    return (i > 0); // At least one digit
}

int main() {
    int n, valid = 1;
    char buffer[100];
    Node *head = NULL, *temp = NULL;

    // Read n
    if (!fgets(buffer, sizeof(buffer), stdin) || !isValidInteger(buffer)) {
        printf("Invalid input\n");
        return 0;
    }
    n = atoi(buffer);

    for (int i = 0; i < n; i++) {
        if (!fgets(buffer, sizeof(buffer), stdin) || !isValidInteger(buffer)) {
            valid = 0;
            break;
        }
        int value = atoi(buffer);
        Node newNode = (Node)malloc(sizeof(Node));
        newNode->data = value;
        newNode->next = head;
        head = newNode;  // Insert at head to reverse input order
    }

    if (!valid) {
        printf("Invalid input\n");
    } else {
        temp = head;
        while (temp) {
            printf("%d", temp->data);
            temp = temp->next;
            if (temp) printf(" ");
        }
        printf("\n");
    }

    // Free linked list
    while (head) {
        temp = head;
        head = head->next;
        free(temp);
    }
    return 0;
}