#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n,i,j,k,l,m,sum,sum1,sum2,sum3,sum4,sum5,flag; char v,w,x,y,z; char dest[30],turn[30]; while(1) { flag=0; cin >> n >>dest; int xx=strlen(dest); if(n==0&&xx==3&&dest[0]=='E'&&dest[1]=='N'&&dest[2]=='D') break; sort(dest,dest+xx);//读题,字典序最大,所以先排好序,sort默认从小到大,有两种解决方法,1,//sort写个比较函数,第二像我一样倒着写 for(i=0;i<xx;i++) { turn[dest[i]-'A']=dest[i]-'A'+1; } for(i=xx-1;i>=0;i--) { v=dest[i]; for(j=xx-1;j>=0;j--) { w=dest[j]; for(k=xx-1;k>=0;k--) { x=dest[k]; for(l=xx-1;l>=0;l--) { y=dest[l]; for(m=xx-1;m>=0;m--) { z=dest[m]; sum1=turn[v-'A']; sum2=turn[w-'A']*turn[w-'A']; sum3=turn[x-'A']*turn[x-'A']*turn[x-'A']; sum4=turn[y-'A']*turn[y-'A']*turn[y-'A']*turn[y-'A']; sum5=turn[z-'A']*turn[z-'A']*turn[z-'A']*turn[z-'A']*turn[z-'A']; sum=sum1-sum2+sum3-sum4+sum5; if(v!=w&&v!=x&&v!=y&&v!=z&&w!=x&&w!=y&&w!=z&&x!=y&&x!=z&&y!=z&&sum==n) { printf("%c%c%c%c%c\n",v,w,x,y,z); flag=1;goto loop; } } } } } } loop: if(flag==0) printf("no solution\n"); } return 0; }