#include <iostream>
#include<vector>
using namespace std;
/*建立数组vec[i],依次输入
用sum[i-1]代表前i项数之和;
positive[i-1]代表前i项中正数的个数;
先找第一部分,再凑第二部分,最后凑第三部分,使每部分的和=sum[n-1]/3。
依次遍历数组,当sum[i]==sum[n-1]/3且positive[i]>0时,
令j=i+1;当sum[j]==2*sum[n-1]/3且positive[j]-positive[i]>0时,
令k=j+1;当sum[k]==sum[n-1]且positive[k]-positive[j]>0时,count++;跳出内层循环
输出count;
*/
int main() {
    int n;
    while (cin >> n) {
        vector<int>vec(n), sum(n), positive(n);
        for (int i = 0; i < n; i++)cin >> vec[i];
        //计算sum[i]和positive[i]
        sum[0] = vec[0];
        positive[0] = (vec[0] > 0 ? 1 : 0);
        for (int i = 1; i < n; i++) {
            sum[i] = sum[i - 1] + vec[i];
            positive[i] = positive[i - 1] + (vec[i] > 0 ? 1 : 0);
        }
        //如果和不是3的倍数,直接输出0,返回
        if (sum[n - 1] % 3 != 0) {
            cout << '0';
            return 0;
        }
        int part_sum = sum[n - 1] / 3;
        int count = 0;
        for (int i = 0; i < n - 2; i++) {                       //计算第一层
            if (sum[i] == part_sum && positive[i] > 0) {        //找到切割点
                for (int j = i + 1; j < n - 1; j++) {           //计算第二层
                    if (sum[j] == 2 * part_sum && positive[j] - positive[i] > 0) {
                        for (int k = j + 1; k < n; k++) {       //计算第三层
                            if (sum[k] == 3 * part_sum && positive[k] - positive[j] > 0) {
                                count++;
                                break;
                            }
                        }
                    }
                }
            }
        }
        cout << count;
        return 0;
    }
}

为自己鼓掌