def Bisect_Int(ok,ng,is_ok): while abs(ok-ng)>1: mid=(ok+ng)//2 if is_ok(mid): ok=mid else: ng=mid return ok Q,Y=map(int,input().split()) S=input().split() def f(x): queue=[] for s in S: if s=="+": queue.append(queue.pop()+queue.pop()) elif s=="min": queue.append(min(queue.pop(),queue.pop())) elif s=="max": queue.append(max(queue.pop(),queue.pop())) elif s=="X": queue.append(x) else: queue.append(int(s)) return queue[0] def is_ok(x): return f(x)>=Y ans=Bisect_Int(1<<60,-1,is_ok) if f(ans)!=Y: ans=-1 print(ans)