#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

typedef struct node {
    char *data;
    struct node *tail;
} node;

node* createnode(char *data) {
    node *newnode = (node*)malloc(sizeof(node));
    if (!newnode) {
        printf("Memory allocation failed\n");
        exit(1);
    }
    newnode->data = strdup(data);  // allocate & copy string
    newnode->tail = NULL;
    return newnode;
}

void printList(node *n) {
    while (n) {
        printf("%s ", n->data);
        n = n->tail;
    }
    printf("\n");
}

int isValid(char *s) {
    for (int i = 0; s[i]; i++) {
        if (!isalnum((unsigned char)s[i])) return 0;
    }
    return 1;
}

int main() {
    int n;
    scanf("%d", &n);

    char v1[15], v2[15], v3[15], v4[15];
    scanf("%s", v1);
    scanf("%s", v2);
    scanf("%s", v3);
    scanf("%s", v4);

    if (!isValid(v1) || !isValid(v2) || !isValid(v3) || !isValid(v4)) {
        printf("Invalid input\n");
        return 1;
    }

    node *n1 = createnode(v1);
    node *n2 = createnode(v2);
    node *n3 = createnode(v3);
    node *n4 = createnode(v4);

    n1->tail = n2;
    n2->tail = n3;
    n3->tail = n4;

    printList(n1);

    // free memory
    free(n1->data); free(n1);
    free(n2->data); free(n2);
    free(n3->data); free(n3);
    free(n4->data); free(n4);

    return 0;
}