#include #include #include int add(char *str, unsigned int b) { static int bl[6] = {1, 2, 4, 8, 16, 32}; int res = 0, i; int start = 0; int len; char tmp; len = strlen(str); for (i = 0; i <= len - 1; i++) { if (b & bl[i] || i == len - 1) { tmp = str[i+1]; str[i+1] = 0; res += atoi(&(str[start])); //printf("%s ", &(str[start])); str[i+1] = tmp; start = i+1; } } //printf("\n"); return res; } void print(char *str, unsigned int b) { static int bl[6] = {1, 2, 4, 8, 16, 32}; int res = 0, i; int start = 0; int len; char tmp; len = strlen(str); for (i = 0; i <= len - 1; i++) { if (b & bl[i] || i == len - 1) { tmp = str[i+1]; str[i+1] = 0; printf(" %s", &(str[start])); str[i+1] = tmp; start = i+1; } } } int main() { int a; char str[100]; int max, maxi, rejected; unsigned int i; int lp[7] = {0, 1, 2, 4, 8, 16, 32}; int len; int res; stdin = freopen("paper.txt", "r", stdin); while (1) { max = 0; rejected = 0; scanf("%d", &a); scanf("%s", str); if (a == 0 && atoi(str) == 0) { break; } len = strlen(str); for (i = 0; i < lp[len]; i++) { res = add(str, i); if (a < res) continue; if (max < res) { rejected = 0; max = res; maxi = i; } else if (max == res) { rejected = 1; } } if (max == 0) { printf("error\n"); } else if (rejected) { printf("rejected\n"); } else { printf("%d", max); print(str, maxi); printf("\n"); } } }