f=->{gets.split.map &:to_i} n=f[][0];t=f[][0];a=f[] dp=Array.new(n+1){Set.new} dp[n].add(t) n.downto(1){|i| x=a[i-1] dp[i].each do |y| dp[i-1].add(y-x) if y-x>=0 dp[i-1].add((y/x).to_i) if y%x==0 end } ans=[];x=0 1.upto(n){|i| y=a[i-1] next (ans<<'+';x+=y) if dp[i].include? y+x ans<<'*';x*=y } print ans[1..]*''