import java.util.Scanner; public class Partition3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] A = new int[n]; for (int i = 0; i < n; i++) { A[i] = scanner.nextInt(); } System.out.println(partition3(A)); } public static int partition3(int[] a) { if (a.length < 3) return 0; int sum = 0; for (int i = 0; i < a.length; i++) { sum = sum + a[i]; } if (sum % 3 != 0) return 0; int W = sum / 3; int[][] values = optimalWeight2DArray(W, a); int count = 0; for (int i = 1; i < a.length + 1; i++) { for (int w = 1; w < W + 1; w++) { if (values[w][i] == W) count = count + 1; } } if (count >= 3) return 1; else return 0; } public static int[][] optimalWeight2DArray(int W, int[] w2) { int j = w2.length; int[][] value = new int[W + 1][j + 1]; for (int i = 0; i < j + 1; i++) { for (int w = 0; w < W + 1; w++) { if (i == 0 || w == 0) { value[w][i] = 0; continue; } value[w][i] = value[w][i - 1]; if (w2[i - 1] <= w) { int val = value[w - w2[i - 1]][i - 1] + w2[i - 1]; if (value[w][i] < val) { value[w][i] = val; } } } } return value; } }