#include <bits/stdc++.h>
using namespace std;

int main()
{
    vector<pair<int,char>>v={  
     {10,'s'},   // -10
    {2,'m'},    // *2
    {5,'a'},    // +5
    {2,'n'},    // negate
    {3,'m'}     // *3
    };
    int n=v.size();
    cout<<"test1"<<endl;
    vector<vector<int>>dpx(n+1,vector<int>(2,0)),dpn(n+1,vector<int>(2,0));
    dpx[0][1]=1;
    dpx[0][0]=1;
    dpn[0][1]=1;
    dpn[0][0]=1;    
    for(int i=1;i<=n;i++){

        if(v[i-1].second=='a'){

          dpx[i][1]=v[i-1].first+max(dpx[i-1][0],dpx[i-1][1]);
          dpx[i][0]=max(dpx[i-1][0],dpx[i-1][1]);
          dpn[i][1]=v[i-1].first+min(dpn[i-1][0],dpn[i-1][1]);
          dpn[i][0]=min(dpn[i-1][0],dpn[i-1][1]);          
        }
        if(v[i-1].second=='s'){

          dpx[i][1]=max(dpx[i-1][0],dpx[i-1][1])-v[i-1].first;
          dpx[i][0]=max(dpx[i-1][0],dpx[i-1][1]);
          dpn[i][1]=min(dpn[i-1][0],dpn[i-1][1])-v[i-1].first;
          dpn[i][0]=min(dpn[i-1][0],dpn[i-1][1]);          
        }
        if(v[i-1].second=='m'){
 
          dpx[i][1]=v[i-1].first*max(dpx[i-1][0],dpx[i-1][1]);
          dpx[i][0]=max(dpx[i-1][0],dpx[i-1][1]);
          dpn[i][1]=v[i-1].first*min(dpn[i-1][0],dpn[i-1][1]);
          dpn[i][0]=min(dpn[i-1][0],dpn[i-1][1]);          
        }
        if(v[i-1].second=='d'){
   
          dpx[i][1]=max(dpx[i-1][0],dpx[i-1][1])/v[i-1].first;
          dpx[i][0]=max(dpx[i-1][0],dpx[i-1][1]);
          dpn[i][1]=min(dpn[i-1][0],dpn[i-1][1])/v[i-1].first;
          dpn[i][0]=min(dpn[i-1][0],dpn[i-1][1]);          
        }
        if(v[i-1].second=='n'){

          dpx[i][1]=max(dpn[i-1][0]*(-1),dpn[i-1][1]*(-1));
          dpx[i][0]=max(dpx[i-1][0],dpx[i-1][1]);
          dpn[i][1]=min(dpx[i-1][0]*(-1),dpx[i-1][1]*(-1));
          dpn[i][0]=min(dpn[i-1][0],dpn[i-1][1]);          
        }        
    }

    
    cout<<" ans "<<max(dpx[n][0],dpx[n][1])<<endl;
    
    return 0;
}