#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
const int maxn=10010;
//组合数与排列数
//组合数 花朵数就是明显的组合数,只是需要累计和,所以与所处的位数无关即只要
//这个组合出现过,就不许要再让其出现了,避免了重复的计算,降低了时间耗损
//方法 : n个数在m个位置实现组合,m层循环,每层循环开始为大于等于上层循环的值
//或者 从最大者开始,每层循环小于等于上层的。
//有的时候不能要前倒0
int main(){
for(int i=3;i>0;i--)
for(int j=i;j>=0;j--)
for(int k=j;k>=0;k--)
cout<<i<<j<<k<<endl;
// for(int i=1;i<=7;i++)
// for(int j=i;j<=7;j++)
// for(int k=j;k<=7;k++)
// cout<<i<<j<<k<<endl;
// for(int l=k;l<=7;l++)
// for(int m=l;m<=7;m++)
// for(int n=m;n<=7;n++)
// for(int o=n;o<=7;o++)
// cout<<i<<j<<k<<l<<m<<n<<o<<endl;
}