N,T,*A = $<.read.split.map &:to_i h = {} s = ?+*(N - 1) def succ s if s[-1] == ?+ s[0..-2] + ?* else succ(s[0..-2]) + ?+ end end def culc a, s l = a.size-1 sum = a[0] l.times{|i| case s[i] when ?+ then sum+=a[i+1] when ?* then sum*=a[i+1] end } sum end loop{ break if culc(A, s) == T if (2..N).each{|j| partial_sum = culc(A[0, j], s[0, j - 1]) if h[[j, partial_sum]] s = succ(s[0,j - 1]) + ?+*(N - j) break elsif s[-1] == ?* s[/\*+$/].size.times{|k| partial_sum = culc(A[0, N - j], s[0, N - j - 1]) h[[N - j, partial_sum]] = partial_sum } end } s = succ s end } $><