public void deselect(HashMap<Integer, ArrayList<Integer>> X, HashMap<Integer, ArrayList<Integer>> Y, int r, HashMap<Integer, ArrayList<Integer>> cols) {
		ArrayList<Integer> rowY = Y.get(r);
		for( int f = rowY.size()-1; f >=0; f--) {
			int j = rowY.get(f);
//		for( int j : rowY ) {
			ArrayList<Integer> rowX = cols.remove(j);
			X.put(j, rowX);
			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.contains(new Integer(i))) {
							remove.add(new Integer(i));
							X.put(k, remove);
						}
					}
				}
			}
		}
	}