public List<List<Integer>> combine(int n, int k) {
			if (n < 0 || k < 0 || n < k) {
				return NULL;
			}
			int[] counts = new int[n];
			for (int i = 0; i < k; ++i) {
				counts[i] = 1;
			}
			List<List<Integer>> res = new LinkedList<List<Integer>>();
			do {
				List<Integer> tmp = new ArrayList<Integer>(k);
				for (int i = 0; i < counts.length; ++i) {
					if (counts[i] == 1) {
						tmp.add(i+1);
					}
				}
				res.add(tmp);
			} while (compute(counts));
			return res;
		}