`#include <stdio.h>
#include <string.h>

#define MAX 1000005

int stack[MAX];
int top = -1;

void push(int val) {
    stack[++top] = val;
}

int pop() {
    if (top == -1) return -1;
    return stack[top--];
}

int peek() {
    if (top == -1) return -1;
    return stack[top];
}

int main() {
    int n;
    scanf("%d", &n);

    char str[MAX];
    scanf("%s", str);

   
    for (int i = 0; i < n; i++) {
        if (str[i] != '(' && str[i] != ')') {
            printf("Invalid input\n");
            return 0;
        }
    }

    int maxLen = 0;
    top = -1;
    push(-1); 

    for (int i = 0; i < n; i++) {
        if (str[i] == '(') {
            push(i);
        } else {
            pop();
            if (top == -1) {
                push(i); 
            } else {
                int len = i - peek();
                if (len > maxLen) {
                    maxLen = len;
                }
            }
        }
    }

    printf("%d\n", maxLen);
    return 0;
}