public Status solve() {
        Status status = grid.solve();
        if (status != Status.SOLVED) {
            return status;
        }

        for (int i = 0; i < size*size; i++) {
            for (int j = 0; j < size*size; j++) {
                if (!containsValue[i][j]) {
                    containsValue[i][j] = true;
                    label[i][j].setFont(FONT_NORMAL);
                    label[i][j].setForeground(COLOR_AUTOFILL);
                    label[i][j].setText("" + grid.value(i, j));
                }
            }
        }
 
        return status;
    }