#include<cstdio>
using namespace std;
//标记回溯法 顺序数组交换法
int a[9]={0};
//bool 数组默认赋值为0 ,bool数组今后统一用0 1赋值
bool b[10]={0};
void dfs(int cur){
// printf("%d ",cur);
//注意对传进来的状态做判断
if(cur>9)return ;
if(cur==9){
int x=a[1]*1000+a[2]*100+a[3]*10+a[4];
int y=a[5]*1000+a[6]*100+a[7]*10+a[2];
int z=a[5]*10000+a[6]*1000+a[3]*100+a[2]*10+a[8];
if(x+y==z){
printf("%d ",y);
for(int i=1;i<=8;i++)
printf("%d--%d ",i,a[i]);
printf("\n");
}
return ;
}
else {
for(int i=0;i<=9;i++) {
if((cur==1||cur==5)&&(i==0)) continue;
if(!b[i]){
b[i]=1;
a[cur]=i;
dfs(cur+1);
b[i]=0;
}
}
}
}
int main(){
dfs(1);
return 0;
}