private static boolean[] possible(final byte[][] work,
                                      final Position pos) {
        boolean[] possible = new boolean[10];
        for (int i = 1; i < 10; i++) {
            possible[i] = true;
        }
        for (int x = 0; x < 9; x++) {
            if (x != pos.getX()) {
                possible[work[x][pos.getY()]] = false;
            }
        }
        for (int y = 0; y < 9; y++) {
            if (y != pos.getY()) {
                possible[work[pos.getX()][y]] = false;
            }
        }
        int xx = (pos.getX() / 3) * 3;
        int yy = (pos.getY() / 3) * 3;
        for (int y = 0; y < 3; y++) {
            for (int x = 0; x < 3; x++) {
                if ((xx + x != pos.getX()) && (yy + y != pos.getY())) {
                    possible[work[xx + x][yy + y]] = false;
                }
            }
        }
        possible[0] = false;
        return possible;
    }