按部就班式代码 黑板上的排列组合 你舍得解开吗 \doge
import java.util.*;

public class Main {

    static List<int[]> indexesList = new ArrayList<>();
    static LinkedList<Integer> STACK = new LinkedList<>();
    static int[] INDEXES;
    static int SUM = 0;
    static int[] ARRAY;
    static boolean SUCCESS = false;
    static int THREE = 0;
    static int FIVE = 0;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        init(in.nextInt(), in);
        if ((SUM & 1) == 1) {
            System.out.println(SUCCESS);
            return;
        }
        traverse();
        System.out.println(SUCCESS);
    }

    static void traverse() {
        for (int i = 1; i <= ARRAY.length; i++) {
            combine(INDEXES, i, 0, 0);
        }
    }

    static boolean isLegalStack() {
        int t = 0, f = 0;
        for (int i = 0; i < STACK.size(); i++) {
            int v = ARRAY[STACK.get(i)];
            if (v % 3 == 0) {
                t++;
            }
            if (v % 5 == 0) {
                f++;
            }
        }
        return (t == 0 && f == FIVE) || (t == THREE && f == 0) || (t == 0 && f == 0);
    }

    static int sum() {
        int s = 0;
        for (int i = 0; i < STACK.size(); i++) {
            s += ARRAY[STACK.get(i)];
        }
        return s;
    }

    static void combine(int[] a, int target, int count, int index) {
        if (SUCCESS) {
            return;
        }
        if (target == count) {
            if (sum() << 1 == SUM && isLegalStack()) {
                SUCCESS = true;
            }
            return;
        }
        for (int i = index; i < a.length; i++) {
            if (!STACK.contains(a[i])) {
                STACK.push(a[i]);
                combine(a, target, count + 1, i);
                STACK.pop();
            }
        }
    }

    static void init(int n, Scanner sc) {
        ARRAY = new int[n];
        INDEXES = new int[n];
        for (int i = 0; i < ARRAY.length; i++) {
            ARRAY[i] = sc.nextInt();
            SUM += ARRAY[i];
            if (ARRAY[i] % 3 == 0) {
                THREE++;
            }
            if (ARRAY[i] % 5 == 0) {
                FIVE++;
            }
            INDEXES[i] = i;
        }

    }
}