//输出格式中两个输出之间有空格的要求是for i 记录次数,if(i) 打印空格
//枚举法注意枚举量的处理需要预处理,枚举法一般是solve方法设计
//Uva725
#include<iostream>
#include<cstdio>
#include<set>
using namespace std;
int main(){
int a;
for(int num=0;;num++){
cin>>a;
if(!a)break;
if(num)cout<<endl;
int jud=0;
set<int> st;//set判重
set<int> st2=st;//恢复到没有insert的下一个阶
for(int i=0;i<10;i++){
st=st2;
st.insert(i);
set<int> st3=st;
for(int j=0;j<10;j++){
st=st3;
if(st.count(j))continue;
st.insert(j);
set<int> st4=st;
for(int k=0;k<10;k++){
st=st4;
if(st.count(k))continue;
st.insert(k);
set<int> st5=st;
for(int x=0;x<10;x++){
st=st5;
if(st.count(x))continue;
st.insert(x);
set<int> st1=st;
for(int y=0;y<10;y++){
st=st1;
if(st.count(y))continue;
st.insert(y);
int s=i*10000+j*1000+k*100+x*10+y;
int div=s*a;
int div1=div;
if(div>=100000)continue;
if(st.count(div%10))continue;
int b=div%10;st.insert(b);div/=10;
if(st.count(div%10))continue;
int c=div%10;st.insert(c);div/=10;
if(st.count(div%10))continue;
int d=div%10;st.insert(d);div/=10;
if(st.count(div%10))continue;
int e=div%10;st.insert(e);div/=10;
if(st.count(div%10))continue;
printf("%d / %05d = %d\n",div1,s,a);
jud=1;
}
}
}
}
}
if(!jud)printf("There are no solutions for %d.\n",a);
}
return 0;
}