import java.util.*;
class Solution {
    private static int count = 0;
    public int solution(int[] numbers, int target) {
        solve(numbers, 0, new ArrayList<>(), target);
        return count;
    }
    
    private static void solve(int[] numbers, int depth,List<Integer> box, int target){
        if(depth == numbers.length){
            int sum = 0;
            for(int v : box){
                sum += v;
            }
            if(sum == target){
                ++count;
            }

            return;
        }
        
        box.add(numbers[depth]);
        solve(numbers, depth + 1, box, target);
        box.remove(box.size() - 1);
        
        box.add(numbers[depth] * -1);
        solve(numbers, depth + 1, box, target);
        box.remove(box.size() - 1);
    }
}