import sys
from sys import stdout
input = sys.stdin.readline
inf = float('inf')
def getInt():
return int(input())
def getStr():
return input().strip()
def getList(split=True):
s = getStr()
if split:
s = s.split()
return list(map(int, s))
t = getInt()
def solve():
n = getInt()
a = getList()
M = 10 ** 9 + 7
dp = [0] * n
dp[0] = 1
c = 1
minus = [0] * (n+1)
minus[0] = 1
p = 0
used = {0: -1}
for i in range(0, n):
dp[i] = c
c = c * 2 % M
c -= minus[i]
c %= M
p += a[i]
if p in used:
minus[i+1] = dp[used[p]+1]
used[p] = i
print(c)
for _ in range(t):
solve()
1091A - New Year and the Christmas Ornament | 1352B - Same Parity Summands |
1102A - Integer Sequence Dividing | 630B - Moore's Law |
1004A - Sonya and Hotels | 1680B - Robots |
1690A - Print a Pedestal (Codeforces logo) | 1295A - Display The Number |
1077A - Frog Jumping | 1714G - Path Prefixes |
1369C - RationalLee | 289B - Polo the Penguin and Matrix |
1716A - 2-3 Moves | 1670B - Dorms War |
1716B - Permutation Chain | 987A - Infinity Gauntlet |
1676G - White-Black Balanced Subtrees | 1716D - Chip Move |
1352F - Binary String Reconstruction | 1487B - Cat Cycle |
1679C - Rooks Defenders | 56A - Bar |
1694B - Paranoid String | 35A - Shell Game |
1684A - Digit Minimization | 43B - Letter |
1017A - The Rank | 1698B - Rising Sand |
235A - LCM Challenge | 1075B - Taxi drivers and Lyft |