/*
链接:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=3&problemid=17
ps:使用了next_permutation(),妈妈再也不担心我全排列忘去重啦、最后一组数据不输出空格,空格只能是下一次开始时输出
*/
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cctype>
#include<iterator>
#include<stack>
using namespace std;
int a[4];
int b[21];
int main()
{
int flag=0;
while(cin>>a[0]>>a[1]>>a[2]>>a[3]&&a[0]+a[1]+a[2]+a[3])
{
if(flag++) cout<<endl; //最后一次输入不能有空格 在开始时设置 (这步参考其他博客)
memset(b,0,sizeof(b));
sort(a,a+4);
int now=0;
do
{
if(a[0]==0) continue;
b[now++]=a[0]*1000+a[1]*100+a[2]*10+a[3];
}
while(next_permutation(a,a+4)); //初始的不会出现
for(int i=0;i<now-1;i++)
{
cout<<b[i];
if(b[i+1]/1000==(b[i]/1000)) cout<<" ";
else cout<<endl;
}
cout<<b[now-1]<<endl;
}
return 0;
}