You are given a bracket sequence s consisting of n opening '(' and closing ')' brackets.

A regular bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters '1' and '+' between the original characters of the sequence. For example, bracket sequences "()()", "(())" are regular (the resulting expressions are: "(1)+(1)", "((1+1)+1)"), and ")(" and "(" are not.

You can change the type of some bracket s_i. It means that if s_i =  ')' then you can change it to '(' and vice versa.

Your task is to calculate the number of positions i such that if you change the type of the i-th bracket, then the resulting bracket sequence becomes regular.

Input

The first line of the input contains one integer n (1 ≤ n ≤ 10^6) — the length of the bracket sequence.

The second line of the input contains the string s consisting of n opening '(' and closing ')' brackets.

Output

Print one integer — the number of positions i such that if you change the type of the i-th bracket, then the resulting bracket sequence becomes regular.

Examples

Input


6
(((())


Output


3


Input


6
()()()


Output


0


Input


1
)


Output


0


Input


8
)))(((((


Output


0
import javafx.util.Pair;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        PrintWriter pw = new PrintWriter(System.out);
        new Main().solve(pw);
        pw.flush();
        pw.close();
    }

    public void solve(PrintWriter pw) {
        FastReader sc = new FastReader();
        int n = sc.nextInt();
        char[] c = sc.next().toCharArray();
        Pair<Integer, Integer>[] prefix = new Pair[n];
        Pair<Integer, Integer>[] suffix = new Pair[n];
        for (int i = 0, j = n - 1; i < n; i++, j--) {
            Pair<Integer, Integer> prev = (i == 0 ? new Pair(0, 0) : prefix[i - 1]);
            Pair<Integer, Integer> temp;
            if (c[i] == '(') temp = new Pair(prev.getKey(), prev.getValue() + 1);
            else {
                if (prev.getValue() > 0) temp = new Pair(prev.getKey(), prev.getValue() - 1);
                else temp = new Pair(prev.getKey() + 1, 0);
            }
            prefix[i] = temp;
            Pair<Integer, Integer> nxt = (j == n - 1 ? new Pair(0, 0) : suffix[j + 1]);
            if (c[j] == ')') temp = new Pair(nxt.getKey() + 1, nxt.getValue());
            else {
                if (nxt.getKey() > 0) temp = new Pair(nxt.getKey() - 1, nxt.getValue());
                else temp = new Pair(0, nxt.getValue() + 1);
            }
            suffix[j] = temp;
        }
        int ans = 0;
        for (int i = 0; i < n; i++) {
            Pair<Integer, Integer> prev = (i == 0 ? new Pair(0, 0) : prefix[i - 1]);
            Pair<Integer, Integer> nxt = (i == n - 1 ? new Pair(0, 0) : suffix[i + 1]);
            if (prev.getKey() > 0 || nxt.getValue() > 0) continue;
            int x = prev.getValue(), y = nxt.getKey();
            if (c[i] == '(') ++y;
            else ++x;
            if (x == y) ++ans;
        }
        pw.println(ans);
    }

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public String next() {
            if (st == null || !st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (Exception e) {
                }
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public double nextDouble() {
            return Double.parseDouble(next());
        }

        public String nextLine() throws IOException {
            return br.readLine();
        }

        public boolean hasNext() {
            if (st != null && st.hasMoreTokens()) return true;
            try {
                String s = br.readLine();
                if (s == null || s.isEmpty()) {
                    return false;
                }
                st = new StringTokenizer(s);
            } catch (Exception e) {
            }
            return true;
        }
    }
}
