#include<iostream>
using namespace std;
typedef struct DuLNode
{
int data;
struct DuLNode *prior,*next;
}DuLNode,*DulinkList;
void CreateList(DulinkList &L,int n)
{//建立双向循环链表
L=new DuLNode; //初始化链表L的头结点
L->prior=L;
L->next=L;
DulinkList r=L; //工作指针r初始化指向头结点
while(n--)
{
DulinkList p=new DuLNode;
cin>>p->data;
p->next=r->next;
r->next=p;
p->prior=r;
p->next->prior=p;
r=p;
}
}
void DuplexSort(DulinkList L)
{//对存储在带头结点的双向链表L中的元素进行双向冒泡排序
/**************begin************/
/**************end************/
}
void PrintList(DulinkList L)
{//依次输出链表中的数据
DulinkList p=L->next;
while(p->next&&p->next!=L)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<p->data<<endl;
}
int main()
{
int n;
while(cin>>n)
{
if(n==0) break;
DulinkList L;
CreateList(L,n);
DuplexSort(L); //双向冒泡排序
PrintList(L);
}
return 0;
}