3SUM 是一个著名的算法问题,要求在给定的整数序列 $c_1, c_2, \dots, c_m$ 中找到三个下标 $i < j < k$,使得 $c_i + c_j + c_k = 0$。
目前尚无针对任意整数序列解决此问题的算法,其复杂度能显著优于 $O(m^2)$。幸运的是,Bajtek 并不知道这一点,他决定解决针对他“非常喜欢的序列”的该问题。
Bajtek 的“喜欢的序列”由 $n$ 个整数 $a_1, a_2, \dots, a_n$ 组成。Bajtek 的“非常喜欢的序列”是通过考察“喜欢的序列”中所有 $\frac{n(n+1)}{2}$ 个连续子区间,计算每个子区间的元素之和,并将这些和按顺序放入一个新序列中(包含重复项)而得到的。子区间的和按子区间起始下标的升序排列;若起始下标相同,则按结束下标的升序排列。
为了增加难度,Bajtek 不仅仅满足于找到一组下标 $i < j < k$。他想知道所有满足条件的下标三元组 $i < j < k$ 的确切数量,使得对应元素之和为零。
请帮助他编写一个程序,计算出满足条件的此类三元组的数量!
输入格式
输入的第一行包含一个整数 $n$ ($1 \le n \le 500$),表示 Bajtek 的“喜欢的序列”的长度。
接下来一行包含 $n$ 个整数 $a_i$ ($|a_i| \le 20\,000$),表示 Bajtek 的“喜欢的序列”中的元素。
输出格式
输出一行,包含一个整数,表示对应于 Bajtek 的“非常喜欢的序列”中元素之和为 0 的下标三元组 $i < j < k$ 的数量。
样例
样例输入 1
3 7 -4 -2
样例输出 1
1
样例输入 2
10 0 0 0 0 0 0 0 0 0 0
样例输出 2
26235
说明
在第一个样例中,Bajtek 的“非常喜欢的序列”为 $[7, 3, 1, -4, -6, -2]$,唯一一组和为 0 的不同元素三元组是 $3 + 1 + (-4)$,因此答案为 1。
在第二个样例中,Bajtek 的“非常喜欢的序列”由 55 个零组成。对于任意三个下标 $i < j < k$,对应元素之和均为 0,这样的三元组共有 26235 个。