#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll MOD = 1000000007; struct Node { ll v; string str; Node(ll v, string str) { this->v = v; this->str = str; } bool operator>(const Node &n) const { return v > n.v; } }; int main() { ll N; cin >> N; priority_queue , greater> pque; pque.push(Node(N, "")); map visited; while (not pque.empty()) { Node node = pque.top(); pque.pop(); if (node.v == 1) { cout << node.str.size() << endl; cout << node.str << endl; break; } if (visited[node.v]) continue; visited[node.v] = true; if (node.v % 2 == 0) { pque.push(Node(node.v / 2, node.str + "/")); } else { pque.push(Node(3 * node.v + 1, node.str + "+")); pque.push(Node(3 * node.v - 1, node.str + "-")); } } return 0; }