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: Accepted)

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;

#define _abs(x)((x) < 0 ? (x) * -1 : (x))
#define _max(x, y)(max(0, max((x), (y))))
#define _min(x, y)(max(0, min((x), (y))))
template<typename T> inline bool __max__(T &x, const T &y) { return x < y ? x = y, 1 : 0; }
template<typename T> inline bool __min__(T &x, const T &y) { return x > y ? x = y, 1 : 0; }

#define pb push_back
#define mp make_pair

static const ll MOD = 1e9 + 7;

vector<string> rec(const int *arr, const int &x, const int &index, vector<string> v) {
    if (index == 3) {
        if (x + arr[index] == 7) v.pb("+");
        else if (x - arr[index] == 7) v.pb("-");
        else v.clear();

        return v;
    }

    vector<string> vv = vector<string>(v.begin(), v.end());

    v.pb("+");
    vv.pb("-");

    vector<string> plus = rec(arr, x + arr[index], index + 1, v);
    vector<string> minus = rec(arr, x - arr[index], index + 1, vv);

    if (plus.size() != 0) return plus;
    if (minus.size() != 0) return minus;

    return plus;
}

void solve(const int &a, const int &b, const int &c, const int &d) {
    int arr[4] = {a, b, c, d};

    vector<string> p, m;

    p.pb("+");
    m.pb("-");

    vector<string> plus = rec(arr, a + b, 2, p);
    vector<string> minus = rec(arr, a - b, 2, m);

    if (plus.size() != 0) {
        cout << a << plus[0] << b << plus[1] << c << plus[2] << d << "=7" << '\n';
    } else if (minus.size() != 0) {
        cout << a << minus[0] << b << minus[1] << c << minus[2] << d << "=7" << '\n';
    }
}

int main()
{
    //freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);
    //freopen("debug.txt", "w", stderr);

    cin.tie(0);
    ios::sync_with_stdio(false);

    string s;

    cin >> s;

    int a = s[0] - '0';
    int b = s[1] - '0';
    int c = s[2] - '0';
    int d = s[3] - '0';

    solve(a, b, c, d);

    return 0;
}