#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
char zifu[30], shu[30];
int n, len;
bool dfs(int n, int deep)
{
int i, t, nt;
char nc;
if(n == 0 && deep == 6)
{
return true;
}
else if(deep > 5)
{
return false;
}
for(i = len - 1; i >= 0; i--)
{
if( zifu[i] != '#')
{
nc = zifu[i];
zifu[i] = '#';
nt = nc - 'A' + 1;
switch(deep)
{
case 1: t = nt; break;
case 2: t = -nt * nt; break;
case 3: t=nt*nt*nt; break;
case 4: t=-nt*nt*nt*nt; break;
case 5: t=nt*nt*nt*nt*nt; break;
}
if( dfs(n-t, deep + 1) )
{
shu[deep -1 ] = nc;
return true;
}
zifu[i] = nc;
}
}
}
int main()
{
while( scanf("%d%s", &n, &zifu) != EOF && n != 0)
{
len = strlen(zifu);
sort(zifu, zifu+len);
if(dfs(n, 1))
{
printf("%s\n",shu);
}
else
{
printf("no solution\n");
}
}
return 0;
}