#include <bits/stdc++.h>
using namespace std;
const int MN = 1000;
char ans[MN][2];
map<vector<string>, bool> used;
bool isEnd = false;
bool check(vector<string> vs, int n) {
  if (vs[0] == "1" && vs[1] == "1" && vs[2] == "1" && vs[3] == "1") {
    for (int i = 0; i < n; i++) cout << ans[i][0] << ans[i][1] << endl;
    isEnd = true;
    return isEnd;
  }
  return false;
}
int make_int(string s) {
  int k = 1;
  int x = 0;
  for (int i = s.size() - 1; i >= 0; i--) {
    x += (s[i] - '0') * k;
    k *= 10;
  }
  return x;
}
string make_string(int x) {
  string s;
  while (x) {
    s += (x % 10) + '0';
    x /= 10;
  }
  reverse(s.begin(), s.end());
  return s;
}
void solve(vector<string> vs, int n, int cnt) {
  if (isEnd || used.count(vs) || n + 1 >= MN) return;
  if (check(vs, n)) return;
  used[vs] = true;
  for (int i = 0; i < 4; i++) {
    if (isEnd) break;
    int a = make_int(vs[i]);
    int b = make_int(vs[(i + 1) % 4]);
    vector<string> tmp = vs;
    if (!(a % 2) && !(b % 2)) {
      a /= 2;
      b /= 2;
      tmp[i] = make_string(a);
      tmp[(i + 1) % 4] = make_string(b);
      ans[n][0] = '/';
      ans[n][1] = (i + 1) + '0';
      a *= 2;
      b *= 2;
      solve(tmp, n + 1, 0);
    }
    if (isEnd) break;
    if (cnt > 2) {
      continue;
    }
    tmp = vs;
    a++;
    b++;
    tmp[i] = make_string(a);
    tmp[(i + 1) % 4] = make_string(b);
    ans[n][0] = '+';
    ans[n][1] = (i + 1) + '0';
    solve(tmp, n + 1, cnt + 1);
  }
}
int main() {
  vector<string> vs;
  for (int i = 0; i < 4; i++) {
    string s;
    cin >> s;
    vs.push_back(s);
  }
  solve(vs, 0, 0);
  return 0;
}
