public ArrayList<HashMap<List<Integer>, HashSet<Integer>>> lshBucketN(HashMap<Integer, ArrayList<Integer>> sigList, HashMap<Integer, ArrayList<Integer>> semanList) {
        ArrayList<HashMap<List<Integer>, HashSet<Integer>>> lshBuckets = lshBucket(sigList);
        for (HashMap<List<Integer>, HashSet<Integer>> lshBucket : lshBuckets) {
            Random rand = new Random();
            ArrayList<Integer> randList = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                randList.add(rand.nextInt(12));
            }
            for (List<Integer> sigs : lshBucket.keySet()) {

                HashSet<Integer> block = lshBucket.get(sigs);
                Iterator<Integer> iter = block.iterator();
                while (iter.hasNext()) {
                    int record = iter.next();
                    for (int j = 0; j < n; j++) {
                        if (semanList.get(record).get(randList.get(j)) == 0) {
                            iter.remove();
                            break;
                        }
                    }
                }
                lshBucket.put(sigs, block);
            }
        }
        System.out.println(lshBuckets.size());
        return lshBuckets;
    }