private boolean solve(int x, int y) {
		if (x > 8)
			return true;
		if (board[x][y] != '.') {
			return solve((y == 8 ? (x+1) : x), (y == 8 ? 0 : (y+1)));
		} else {
			for (int i = 0; i < 9; i++) {
				board[x][y] = (char) ('1' + i);
				if (checkValid(x, y) && solve((y == 8 ? (x+1) : x), (y == 8 ? 0 : (y+1))))
					return true;
				board[x][y] = '.';
			}
			return false;
		}
	}