Function to print all subarrays with a zero-sum in a given array
# Utility function to insert <key, value> into the dictionary
def insert(dict, key, value):
# if the key is seen for the first time, initialize the list
dict.setdefault(key, []).append(value)
# Function to print all sublists with a zero-sum present in a given list
def printallSublists(A):
# create an empty dictionary to store the ending index of all
# sublists having the same sum
dict = {}
# insert `(0, -1)` pair into the dictionary to handle the case when
# sublist with zero-sum starts from index 0
insert(dict, 0, -1)
sum = 0
# traverse the given list
for i in range(len(A)):
# sum of elements so far
sum += A[i]
# if the sum is seen before, there exists at least one
# sublist with zero-sum
if sum in dict:
list = dict.get(sum)
# find all sublists with the same sum
for value in list:
print("Sublist is", (value + 1, i))
# insert (sum so far, current index) pair into the dictionary
insert(dict, sum, i)