#include <cstdio>
#include <algorithm>
#define INF 987654321
int N, DT[10010][10010];
struct BREAD{ int p; char k; } S[10010];
bool cmp(BREAD a, BREAD b){ return a.p < b.p; }
int max(int a, int b){ return a>b?a:b; }
int solve(int k, int b, int m, int A, int B)
{
    int ans = 0;
    if( b < 0 || m < 0 ) return -INF;
    if( k == N ) return 0;
    if( S[k].k == '|' ){
        if( DT[A][B] == 0 ){
            DT[A][B] = max(solve(k+1,b+1,m,A+1,B+1), solve(k+1,b,m-1,A,B+1)+3);
        }
        return DT[A][B];
    }
    if( S[k].k == '@' ) ans = max(solve(k+1,b-1,m+1,A,B), solve(k+1,b,m,A,B));
    if( S[k].k == ')' ) ans = max(solve(k+1,b,m-1,A,B)+2, solve(k+1,b,m,A,B));
    return ans;
}
int main()
{
    scanf("%d", &N);
    for(int i = 0 ; i < N ; i++ )
        scanf("%d %c", &S[i].p, &S[i].k);
    std::sort(S, S+N, cmp);
    printf("%d", max(0, solve(0,0,0,0,0)));
}