#include <stdio.h>
 
int main(void)
{
    int a[9],b[9],a_ln[9]={0},a_lnf[9]={0};
    char k[9]={'+','+','+','+','+','+','+','+','+'};
    int i,ac,bc,next,ans,ans_cnt = 0;
    while(a_lnf[8]==0/*&&ans_ant<10*/)
    {
        //初期化
        for(i = 0; i < 9; i++)
            k[i] = '+';

        ac=1;
        a_ln[0] = 1;
        //つなげる
        for(i=1;i<9;i++)
        {
            if(a_lnf[i-1]==0)//つなげない場合
                a_ln[ac++] = i+1;
            else//つなげる場合
            {
                a_ln[ac-1] *= 10;
                a_ln[ac-1] += i+1;
            }
        }

        //記号総当たり
        while(k[ac-1] == '+'/*&&ans_ant<10*/)
        {
            //初期化
            bc = 1;
            next = 1;

            for(i = 0; i < ac; i++)
            {
                a[i] = a_ln[i];
                b[i] = 1;
            }
            b[0] = a[0];
            //減算＆乗算
            for(i = 1; i < ac; i++)
            {
                switch(k[i-1]){
                case '-':
                    a[i] *= -1;
                case '+':
                    bc++;
                default:
                    b[bc-1] *= a[i];
                    break;
                }
            }
            //加算
            ans = b[0];
            for(i = 1; i < bc; i++)
                ans += b[i]; 
            //答え合わせ
            if(ans==100){
                ans_cnt++;
                printf("%d個目の答え:",ans_cnt);
                for(i = 0; i < ac-1; i++)
                    printf("%d%c",a_ln[i],k[i]);
                printf("%d\n",a_ln[i]);
            }
            //ずらす
            for(i = 0; next; i++)
                switch(k[i]){
                case '+':
                    k[i] = '-';
                    next = 0;
                    break;
                case '-':
                    k[i] = '*';
                    next = 0;
                    break;
                case '*':
                    k[i] = '+';
                    break;
                }
        }
        next = 1;
        for(i = 0; next; i++)
            if(a_lnf[i]){
                a_lnf[i] = 0;
            }
            else
            {
                a_lnf[i] = 1;
                next = 0;
            }
     }
    return 0;
}