from collections import defaultdict
def main(arr,k):
# ps[j]-ps[i] max:==> ps[j]-ps[i] should be minimum
n=len(arr)
ps=[]
for x in arr:
if len(ps) == 0:
ps.append(x)
else:
ps.append(x+ps[-1])
hm=defaultdict(int)
ans=0
for j in range(n):
p1= k + arr[j]
p2= -1*k + arr[j]
if p1 in hm:
i=hm[p1]
s= ps[j] if i==0 else ps[j]-ps[i-1]
ans=max(ans,s)
if p2 in hm:
i=hm[p2]
s= ps[j] if i==0 else ps[j]-ps[i-1]
ans=max(ans,s)
if arr[j] not in hm:
hm[arr[j]]=j
else:
prevIndexPS=ps[hm[arr[j]]]
currIndexPS=ps[j]
if currIndexPS < prevIndexPS:
hm[arr[j]]=j
return ans
print(main([1,5,-5,8,8,8,10,15],5))
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKZGVmIG1haW4oYXJyLGspOgogICAgCiAgICAjIHBzW2pdLXBzW2ldIG1heDo9PT4gcHNbal0tcHNbaV0gc2hvdWxkIGJlIG1pbmltdW0KICAgIAogICAgbj1sZW4oYXJyKQogICAgcHM9W10KICAgIAogICAgZm9yIHggaW4gYXJyOgogICAgICAgIGlmIGxlbihwcykgPT0gMDoKICAgICAgICAgICAgcHMuYXBwZW5kKHgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHMuYXBwZW5kKHgrcHNbLTFdKQogICAgCiAgICBobT1kZWZhdWx0ZGljdChpbnQpCiAgICAKICAgIGFucz0wCiAgICAKICAgIGZvciBqIGluIHJhbmdlKG4pOgogICAgICAgIHAxPSBrICsgYXJyW2pdCiAgICAgICAgcDI9IC0xKmsgKyBhcnJbal0KICAgICAgICAKICAgICAgICBpZiBwMSBpbiBobToKICAgICAgICAgICAgaT1obVtwMV0KICAgICAgICAgICAgcz0gcHNbal0gaWYgaT09MCBlbHNlIHBzW2pdLXBzW2ktMV0KICAgICAgICAgICAgYW5zPW1heChhbnMscykKICAgICAgICAKICAgICAgICBpZiBwMiBpbiBobToKICAgICAgICAgICAgaT1obVtwMl0KICAgICAgICAgICAgcz0gcHNbal0gaWYgaT09MCBlbHNlIHBzW2pdLXBzW2ktMV0KICAgICAgICAgICAgYW5zPW1heChhbnMscykKICAgICAgICAKICAgICAgICBpZiBhcnJbal0gbm90IGluIGhtOgogICAgICAgICAgICBobVthcnJbal1dPWoKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmV2SW5kZXhQUz1wc1tobVthcnJbal1dXQogICAgICAgICAgICBjdXJySW5kZXhQUz1wc1tqXQogICAgICAgICAgICBpZiBjdXJySW5kZXhQUyA8IHByZXZJbmRleFBTOgogICAgICAgICAgICAgICAgaG1bYXJyW2pdXT1qCiAgICAgICAgCiAgICAKICAgIHJldHVybiBhbnMKICAgIAoKcHJpbnQobWFpbihbMSw1LC01LDgsOCw4LDEwLDE1XSw1KSk=