import bisect
for _ in range(int(input())):
n, x = map(int, input().split())
a = list(map(int, input().split()))
p = [0] * (n + 1)
d = [0] * (n + 3)
for i in range(n):
p[i + 1] = p[i] + a[i]
res = 0
for i in range(n - 1, -1, -1):
v = p[i] + x
idx = bisect.bisect_left(p, v)
if idx > n:
d[i] += (n - i)
elif v == p[idx]:
d[i] += (idx - i) + (d[idx + 1] if idx + 1 < n + 3 else 0)
else:
d[i] += (idx - i - 1) + (d[idx] if idx < n + 3 else 0)
res = sum(d[:n])
print(res)
156C - Cipher | 545D - Queue |
459B - Pashmak and Flowers | 1538A - Stone Game |
1454C - Sequence Transformation | 165B - Burning Midnight Oil |
17A - Noldbach problem | 1350A - Orac and Factors |
1373A - Donut Shops | 26A - Almost Prime |
1656E - Equal Tree Sums | 1656B - Subtract Operation |
1656A - Good Pairs | 1367A - Short Substrings |
87A - Trains | 664A - Complicated GCD |
1635D - Infinite Set | 1462A - Favorite Sequence |
1445B - Elimination | 1656C - Make Equal With Mod |
567A - Lineland Mail | 1553A - Digits Sum |
1359B - New Theatre Square | 766A - Mahmoud and Longest Uncommon Subsequence |
701B - Cells Not Under Attack | 702A - Maximum Increase |
1656D - K-good | 1426A - Floor Number |
876A - Trip For Meal | 1326B - Maximums |