@Override
	public RowCol getBestBox() {
		int minPos = 10;

		int row = -1;
		int col = -1;

		int countMinPos = 0;

		for (int r = 0; r < 9; r++) {
			for (int c = 0; c < 9; c++) {
				int size = grid[r][c].getPossibleValues().size();
				if (size != 0) {
					if (size == minPos) {
						countMinPos++;
					} else if (size < minPos) {
						countMinPos = 0;
						minPos = size;
					}
				}
			}
		}

		int id = (int) (Math.random() * countMinPos);
		countMinPos = 0;

		suite: for (int r = 0; r < 9; r++) {
			for (int c = 0; c < 9; c++) {
				int size = grid[r][c].getPossibleValues().size();
				if (size == minPos) {
					if ((countMinPos++) == id) {
						row = r;
						col = c;
						break suite;
					}
				}
			}
		}
		return new RowCol(row, col);
	}