#include <iostream>
#include <climits>
#include <cstring>
using namespace std;
int nLenEnd;
int best;
int maxVal;
bool rejected;
bool error;
int cut;
char szArr[7];
int path[7];
int tempVal[7];
void DFS( int head, int sum, int cutCount ){
int num = 0;
if( sum > maxVal )
return;
if( head == nLenEnd ){
if( sum == best )
rejected = true;
if( sum > best ){
cut = cutCount - 1;
rejected = false;
best = sum;
for( int i = 0; i < cutCount; ++i )
path[i] = tempVal[i];
}
return;
}
for( int i = head; i < nLenEnd; ++i ){
num = num * 10 + szArr[i] - '0';
tempVal[cutCount] = num;
DFS( i + 1, sum + num, cutCount + 1 );
}
}
int main(){
while( true ){
memset( path, 0, sizeof( path ) );
rejected = false;
error = false;
cut = 0;
best = INT_MIN;
cin >> maxVal >> szArr;
if( maxVal == 0 && szArr[0] == '0' )
break;
nLenEnd = strlen(szArr);
DFS( 0, 0, 0 );
if( best == INT_MIN )
error = true;
if( rejected )
cout << "rejected" << endl;
else if( error )
cout << "error" << endl;
else{
cout << best << " ";
for( int i = 0; i <= cut; ++i )
cout << path[i] << " ";
cout << endl;
}
}
return 0;
}