// editor2
#include<stdio.h>
#include<stdlib.h>
struct Node {
    int data;
    struct Node* next;
    
};
struct Node* createNode(int value){
    struct Node*newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = value;
    newNode->next = NULL;
    return newNode;
    
}
void printlist(struct Node*head){
    if (head == NULL) return;
    struct Node*temp=head;
    do{
        printf("%d",temp->data);
        temp = temp->next;
        
    }while(temp != head);
    printf("\n");
}
int main(){
    int n;
    scanf("%d",&value);
    struct Node*newNode = createNode(value);
    if(head == NULL){
        head = newNode;
        tail = newNode;
    }else{
        tail->next = newNode;
        tail = newNode;
    }
}
tail->next =head;
struct Node *evenHead = NULL, *evenTail =NULL;
struct Node *oddHead = NULL, *oddTail = NULL;
struct Node* temp = head;
do{
    if(temp->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 = creatNode(temp->data);
            if(oddHead == NULL){
                oddHead = newNode;
                oddTail = newNode;
            }else{
                oddTail->next = newNode;
                oddTail = newNode;
            }
        }
        temp = temp->next;
    }while(temp != head);
    if(evenTail) evenTail-> = evenHead;
    if(oddTail) oddTail->next = oddHead;
    printlist(evenHead);
    printlist(oddHead);
    
    return 0;
}