import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int a = in.nextInt();
long[] num = new long[a];//num[]存储题目所给的数组
long[] num2 = new long [a];//num2[]是数组num的前n项和
long[] num3 = new long [a];//num3[]存储数组num前n项包含的正数个数
long plus = 0;//plus用于num正数个数计数
long sum = 0;//sum用于数组num求和
for (int i = 0; i < a; i++) {
num[i] = in.nextInt();//输入数组数据
sum = sum + num[i];
num2[i] = sum;//存储数组num前n项和
if (num[i] > 0) {
plus++;
}
num3[i] = plus;//记录数组正数个数
}
int count = 0;//count记录符合题意的划分方案
Vector<Integer> left = new Vector();
Vector<Integer> right = new Vector();//left和right分别记录从左和从右开始部分和为sum/3的下标
long left_sum = 0;
long right_sum = 0;
for (int j = 0; j < a - 2; j++) {
left_sum = left_sum + num[j];
if (left_sum == sum / 3 && sum % 3 == 0) {
left.add(j);
}
}
for (int k = a - 1; k > 1; k--) {
right_sum = right_sum + num[k];
if (right_sum == sum / 3 && sum % 3 == 0) {
right.add(k);
}
}
//两重for循环遍历
for (int le : left) {
//第一重循环剪枝,排除第一部分没有正数的情况
if (num3[le] > 0) {
for (int ri : right) {
//保证左侧下标小于右侧下标
if (le < ri) {
{
//判断中间和右侧部分是否有正数
if ( num3[ri - 1] - num3[le] > 0 &&
num3[a - 1] - num3[ri] >= 0) {
count++;
}
}
}
}
}
}
//循环结束,输出最终结果
System.out.println(count);
}
}
}