int stack[10];
void divide(int n, int m, int index) {
if (n == 0) {
//當(dāng)符合條件時(shí),輸出
for (int i = 0; i < index - 1; i++) {
printf("%d + ", stack[i]);
}
printf("%d\n", stack[index - 1]);
}
for (int j = n; j > 0; j--) {
if (j <= m) {
stack[index] = j;
divide(n - j, j, index + 1);
}
}
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
divide(n, n, 0);
}
return 0;
}
void change(int n) {
int ans[8] = {0}, flag = 0;
while (n > 0) {
ans[flag] = n % 2;
n = n / 2;
flag++;
}
for (int i = 7; i >= 0; i--) {
printf("%d", ans[i]);
}
}
int main() {
char str[100];
int j, sum = 0;
while(gets(str)) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= '0' && str[i] <= '9') {
j = str[i] - '0';
sum = sum * 10 + j;
} else {
change(sum);
printf(".");
sum = 0;
}
if (i == len - 1) {
change(sum);
}
}
printf("\n");
}
return 0;
}