Help me in solving BRACQUER problem

My issue

partially correct .few test cases no passed

My code

# cook your dish here
t = int(input())
for _ in range(t):
    s = input()
    arr = [[0]*5001 for _ in range(5001)]
    q = int(input())
    pq = [list(map(int, input().split())) for _ in range(q)]
    n = len(s)
    for i in range(n):
        ct = 0
        prev = i
        for j in range(i, n):
            if s[j] == '(':
                ct += 1
            else:
                if ct > 0:
                    ct -= 1
                else:
                    ct = 0
                    prev = j + 1
            if ct == 0:
                arr[i][j] = max(arr[i][j], j - prev + 1)
    for i in range(1, n):
        for j in range(n - i):
            k = j + i
            prev = j if j == n - 1 else j + 1
            nxt = n - 1 if k - 1 >= n else k - 1
            arr[j][k] = max(max(arr[j][k], arr[j][nxt]), max(arr[prev][k], arr[prev][nxt]))
    for x in pq:
        print(arr[x[0] - 1][x[1] - 1], end=" ")
    print()

Learning course: Python with Data structures
Problem Link: CodeChef: Practical coding for everyone