private void enumerateClique(CPD tmp, Context context)
				throws IOException, InterruptedException {
			Stack<CPD> stack = new Stack<CPD>();
			stack.add(tmp);
			while (!stack.empty()) {
				CPD top = stack.pop();
				HashSet<Integer> notset = top.getExcl();
				HashMap<Integer, Integer> cand = top.getCand();
				int level = top.getLevel();
				int vp = top.getVisitedPoint();
				if (level + cand.size() <= MaxOne) {
					continue;
				}
				if (allContained(cand, notset)) {
					continue;
				}
				if (result.size() + 1 == level) {
					result.add(vp);
				} else {
					result.set(level - 1, vp);
				}
				if (cand.isEmpty()) {
					if (notset.isEmpty()) {
						emitClique(result, level, cand, context);
					}
					continue;
				}
				int fixp = findMaxDegreePoint(cand);
				ArrayList<Integer> noneFixp = new ArrayList<Integer>(
						cand.size() - maxdeg);
				HashMap<Integer, Integer> tmpcand = genInterSet(cand, fixp,
						maxdeg, noneFixp);
				HashSet<Integer> tmpnot = genInterSet(notset, fixp);
				stack.add(new CPD(fixp, level + 1, tmpcand, tmpnot));
				notset.add(fixp);
				for (int fix : noneFixp) {
					HashMap<Integer, Integer> tcd = genInterSet(cand, fix);
					HashSet<Integer> tnt = genInterSet(notset, fix);
					stack.add(new CPD(fix, level + 1, tcd, tnt));
					notset.add(fix);
				}
			}
		}