#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int llint; typedef long double lldo; #define mp make_pair #define mt make_tuple #define pub push_back #define puf push_front #define pob pop_back #define pof pop_front #define fir first #define sec second #define res resize #define ins insert #define era erase //cout<void mineq(T& a,U b){if(a>b){a=b;}} template void maxeq(T& a,U b){if(a void SO(T& ve){sort(ve.begin(),ve.end());} template void REV(T& ve){reverse(ve.begin(),ve.end());} int LBI(vector&ar,llint in){return lower_bound(ar.begin(),ar.end(),in)-ar.begin();} int UBI(vector&ar,llint in){return upper_bound(ar.begin(),ar.end(),in)-ar.begin();} int main(void){ llint n,i;cin>>n; string str;cin>>str; vector>subue; vector>subst; llint gen=0,sai=0; for(i=0;i=0){subue.pub(mp(sai,gen));} else{subst.pub(mp(sai,gen));} } sai=0;gen=0; SO(subue); SO(subst);REV(subst); //上方向を使い切る->下方向 for(auto it:subue){ mineq(sai,gen+it.fir); gen+=it.sec; } for(auto it:subst){ mineq(sai,gen+it.fir); gen+=it.sec; } llint ans=n*(n+1)/2; ans-=gen; ans+=sai*2; cout<