Hello Chefs, will you please help me where am I going wrong in following solution :
def ans(L,R):
k = max(L,raf[R-1])-1
return (sumFar[k]-sumFar[L-1]+(R-k)*(R+1)-(R*(R+1)//2)-(L*(L-1)//2))
for _ in range(int(input())):
n,k,q = map(int,input().split())
s = input()
far = []; raf = [-1]*n; sumFar = [0]; c0 = c1 = j = 0
for i in range(n):
while j<n and c0<k and c1<k:
if s[j]=='1':
c1 += 1
else:
c0 += 1
j += 1
far.append(j); sumFar.append(sumFar[i]+far[i])
if s[i]=='1':
c1 -= 1
else:
c0 -= 1
for i in range(n-1,-1,-1):
raf[far[i]-1] = i
for i in range(n-1,-1,-1):
if raf[i]==-1:
raf[i] = raf[i+1]
for _ in range(q):
l,r = map(int,input().split())
print(ans(l,r))