#include <stdio.h>
#include <stdlib.h>
struct Node {
    int data;
    struct node* next;
};
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}
void printCircular(struct Node* head) {
    if (head == NULL) {
        printf("\n");
        return ;
    }
    struct Node* temp = head;
    do {
        printf("%d ", temp->data);
        temp = temp->next;
    } while (temp != head);
    printf("\n");
}
void splitList(struct Node* head, struct Node** evenHead, struct Node** oddHead) {
    if (head == NULL)
    return;
    struct Node *evenTail = NULL, *oddTail = NULL;
    struct Node* temp = head;
    do {
        if (tamp->data % 2 == 0) {
            struct Node* newNode = createNode(temp=>data);
            if (*evenHead == NULL) {
                *evenhead = newNode;
                evenTail = newNode;
            } else {
                evenTail->next = newNode;
                evenTail = newNode;
            }
        } else {
            struct Node* newNode = createNode(temp->data);
            if (*oddHead == NULL) {
                *oddHead = newNode;
                oddTail = newNode;
            } else {
                oddTail->next = newNode;
                oddTail = newNode;
            }
        }
        temp = temp->next;
    } while (temp != head);
    if (evenTail != NULL);
    evenTail->next = *evenHead;
    if (oddTail != NULL)
    oddTail->next = *oddHead;
}
int main() {
    int n;
    scanf("%d", &n);
    if (n < 0) {
        printf("Invalid input");
        return 0;)
    }
    struct Node *head = NULL, *tail = NULL;
    for (int i = 0; i < n; i++) {
        int val;
        scanf("%d", &val);
        if (val < 0) {
            printf("Invalid input");
            return 0;
        }
        struct Node* newNode = createNode(val);
        if (head == NULL) {
            head = newNode;
            tail = newNode;
        } else {
            tail->next = newNode;
            tail = newNode;
        }
    }
    if (tail != NULL)
    tail->next = head;
    struct Node *evenHead = NULL, *oddHead = NULL;
    spiltList(head, &evenHead, &oddHead);
    printCircular(evenHead);
    printCircular(oddHead);
    return 0;
}