Problem:
Score : 300 points

Problem Statement

Sitting in a station waiting room, Joisino is gazing at her train ticket.

The ticket is numbered with four digits A, B, C and D in this order, each between 0 and 9 (inclusive).

In the formula A op1 B op2 C op3 D = 7, replace each of the symbols op1, op2 and op3 with + or - so that the formula holds.

The given input guarantees that there is a solution. If there are multiple solutions, any of them will be accepted.

Constraints

0≤A,B,C,D≤9

All input values are integers.

It is guaranteed that there is a solution.

Input

Input is given from Standard Input in the following format:

ABCD

Output

Print the formula you made, including the part =7.

Use the signs + and -.

Do not print a space between a digit and a sign.

Sample Input 1

1222

Sample Output 1

1+2+2+2=7

This is the only valid solution.

Sample Input 2

0290

Sample Output 2

0-2+9+0=7

0 - 2 + 9 - 0 = 7 is also a valid solution.

Sample Input 3

3242

Sample Output 3

3+2+4-2=7

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <iostream>
#include <vector>
#include <string>
#include <numeric>
#include <algorithm>

using namespace std;

int main() 
{
    vector<int> vec;
    string str;
    cin>>str;
    for(int i=0;i<4;i++){
        vec.push_back(((int)str[i] - 48));
    }

    if(accumulate(vec.begin(), vec.end(), 0)==7){
        cout<<accumulate(vec.begin(), vec.end(), 0)<<endl;
        str = "A+B+C+D=7";
        replace(str.begin(), str.end(), 'A', to_string(vec[0])[0]);
        replace(str.begin(), str.end(), 'B', to_string(vec[1])[0]);
        replace(str.begin(), str.end(), 'C', to_string(vec[2])[0]);
        replace(str.begin(), str.end(), 'D', to_string(vec[3])[0]);
        cout<<str<<endl;
        return 0;
    }

    for(int i=1;i<4;i++){
        vec[i]*=-1;
        if(accumulate(vec.begin(), vec.end(), 0)==7){
            vec[i]*=-1;
            str = "A+B+C+D=7";
            str[i*2-1] = '-';
            replace(str.begin(), str.end(), 'A', to_string(vec[0])[0]);
            replace(str.begin(), str.end(), 'B', to_string(vec[1])[0]);
            replace(str.begin(), str.end(), 'C', to_string(vec[2])[0]);
            replace(str.begin(), str.end(), 'D', to_string(vec[3])[0]);
            cout<<str<<endl;
            return 0;
        }
        vec[i]*=-1;
    }

    vec[1]*=-1;vec[2]*=-1;vec[3]*=-1;
    for(int i=1;i<4;i++){
        vec[i]*=-1;
        if(accumulate(vec.begin(), vec.end(), 0)==7){
            vec[i]*=-1;
            str = "A-B-C-D=7";
            str[i*2-1] = '+';
            replace(str.begin(), str.end(), 'A', to_string(vec[0])[0]);
            replace(str.begin(), str.end(), 'B', to_string(vec[1])[0]);
            replace(str.begin(), str.end(), 'C', to_string(vec[2])[0]);
            replace(str.begin(), str.end(), 'D', to_string(vec[3])[0]);
            cout<<str<<endl;
            return 0;
        }
        vec[i]*=-1;
    }
    vec[1]*=-1;vec[2]*=-1;vec[3]*=-1;

    str= "A-B-C-D=7";
    replace(str.begin(), str.end(), 'A', to_string(vec[0])[0]);
    replace(str.begin(), str.end(), 'B', to_string(vec[1])[0]);
    replace(str.begin(), str.end(), 'C', to_string(vec[2])[0]);
    replace(str.begin(), str.end(), 'D', to_string(vec[3])[0]);
    cout<<str<<endl;
    return 0;
}