public HashMap<Integer, ArrayList<Integer>> select(HashMap<Integer, ArrayList<Integer>> X, HashMap<Integer, ArrayList<Integer>> Y, int r) {
		HashMap<Integer, ArrayList<Integer>> cols = new HashMap<Integer, ArrayList<Integer>>();
		ArrayList<Integer> rowY = Y.get(r);
		for( int j : rowY ){
			ArrayList<Integer> rowX = X.get(j);
			if (rowX != null) {
				for (int i : rowX) {
					ArrayList<Integer> rowY2 = Y.get(i);
					for (int k : rowY2) {
						if (k != j) {
							ArrayList<Integer> remove = X.remove(k);
							// if( remove == null ) remove = new
							// ArrayList<Integer>();
							if (remove != null) {
								remove.remove(new Integer(i));
								if (remove != null)
									X.put(k, remove);
							}
						}
					}
				}
			}
			ArrayList<Integer> p = X.remove(j);
			cols.put(j,p);
		}
		return cols;
	}