public List<Integer> count(List<Integer> list) {
        int len = list.size();
        if (len < 2)
            return list;

        List<Integer> left = count(list.subList(0, len / 2));
        List<Integer> right = count(list.subList(len / 2, len));

        return merge(left, right);
    }