#include <bits/stdc++.h>
using namespace std;
inline bool is1(vector<int>& v) {
  return v[0] == 1 && v[1] == 1 && v[2] == 1 && v[3] == 1;
}
void print(vector<int> v) {
  for (int _n(((int)((v).end() - (v).begin())) - 1), i(0); i <= _n; i++)
    printf("%d ", v[i]);
  printf("\n");
}
map<vector<int>, bool> used;
vector<int> gen(int iter) {
  vector<int> v(4, 1);
  for (int _n((iter)-1), i(0); i <= _n; i++) {
    print(v);
    int ir = rand() % 4;
    if (rand() & 1)
      v[ir]++, v[(ir + 1) % 4]++;
    else
      v[ir] *= 2, v[(ir + 1) % 4] *= 2;
  }
  return v;
}
vector<string> st;
string tostr(int x) {
  stringstream ss;
  ss << x;
  string s;
  ss >> s;
  return s;
}
int main() {
  vector<int> v(4);
  for (int _n((4) - 1), i(0); i <= _n; i++) cin >> v[i];
  while (!is1(v)) {
    if (used[v]) {
      for (int _n((2) - 1), k(0); k <= _n; k++)
        for (int _n((4) - 1), i(0); i <= _n; i++) {
          int ci = rand() % 4;
          v[ci]++;
          v[(ci + 1) % 4]++;
          printf("+%d\n", ci + 1);
        }
    }
    used[v] = true;
    bool fl = false;
    if (!fl) {
      for (int _n((4) - 1), i(0); i <= _n; i++)
        if (v[i] % 2 == 0 && v[(i + 1) % 4] % 2 == 0) {
          v[i] /= 2;
          v[(i + 1) % 4] /= 2;
          printf("/%d\n", i + 1);
          fl = true;
          break;
        }
    }
    if (!fl) {
      for (int _n((4) - 1), i(0); i <= _n; i++)
        if (v[i] % 2 == 1 && v[i] != 1) {
          v[i]++;
          v[(i + 1) % 4]++;
          printf("+%d\n", i + 1);
          fl = true;
          break;
        }
    }
    if (!fl) {
      for (int _n((4) - 1), i(0); i <= _n; i++)
        if (v[i] % 2 == 1) {
          v[i]++;
          v[(i + 1) % 4]++;
          printf("+%d\n", i + 1);
          fl = true;
          break;
        }
    }
  }
  return 0;
}
