module main; // https://kmjp.hatenablog.jp/entry/2014/11/02/1000 より import std; import core.stdc.stdlib; void main() { // 入力 int N = readln.chomp.to!int; int total = readln.chomp.to!int; auto A = readln.split.to!(int[]); // 答えの計算(深さ優先探索) char[] ops; auto dp = new bool[][](N, 100_000); // 探索済みの数値 void dfs(int cur, int v) { if (v > total) return; if (cur == N) { if (v == total) { writeln(ops); exit(0); } return; } if (dp[cur][v]) return; dp[cur][v] = true; ops ~= '+'; dfs(cur + 1, v + A[cur]); ops.popBack; ops ~= '*'; dfs(cur + 1, v * A[cur]); ops.popBack; } // 答えの出力 dfs(1, A[0]); }