#include <bits/stdc++.h>
using namespace std;
const int N = 4e6 + 2;
char s[N];
int a[N], j[N];
long long dp[N];
int main(){
int n;
scanf("%d%s", &n, s + 1);
stack<int> st;
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int i = 1; i <= n; i++){
dp[i] = dp[i - 1];
if (!st.empty() && s[i] == ')'){
j[i] = st.top(), st.pop();
if (j[j[i] - 1] && a[j[i] - 1] - a[j[i]] < 0) j[i] = j[j[i] - 1];
dp[i] = max(dp[i], dp[j[i] - 1] + a[i] - a[j[i]]);
}
else if (s[i] == '(') st.push(i);
}
printf("%lld", dp[n]);
return 0;
}