#include <stdio.h>
#include <stdlib.h>
#define ERROR -1
//题中先入先出,适合用队列结构,A口出俩B口出一个
//出队Front后移,入队Rear后移
struct que{
int Data[1000];
int Front,Rear;
};
typedef struct que *QNode;
typedef QNode Queue;
int main()
{
int n;
//初始化A,B两个队列,首尾均指向零
Queue A=(Queue)malloc(sizeof(struct que));
Queue B=(Queue)malloc(sizeof(struct que));
A->Rear=B->Rear=A->Front=B->Front=0;
scanf("%d",&n);
while(n--){//while几--代表循环几次
int num;
scanf("%d",&num);
if(num%2){//奇数入A
A->Data[A->Rear++]=num;
}//偶数入B
else B->Data[B->Rear++]=num;
}
int cnt=0;//考虑全是偶数的情况
if(A->Data[0])cnt=1;
int i=0;
while(A->Front!=A->Rear){//先以A为基准,在循环过程中判断AB是否空
int a2=2;//i用来控制输出,第一位不用空格,后边每位前有一个空格
while(a2--&&A->Front!=A->Rear){//A队先出两个,两次,且要非空才能出
if(i++){
printf(" %d",A->Data[A->Front++]);
}
else printf("%d",A->Data[A->Front++]);
}
if(B->Front!=B->Rear){
printf(" %d",B->Data[B->Front++]);
}
}
//A出完B还有,要考虑全是偶数的情况,所以偶数第一个也要控制格式
while(B->Rear!=B->Front){
if(cnt==0){
printf("%d",B->Data[B->Front++]);
cnt++;
}
else{
printf(" %d",B->Data[B->Front++]);
}
}
return 0;
}