If a complete assignment program is not possible in step 3, then select the smallest (largest) element (say dij) out of those which do not lie on any of the lines in the above matrix. Then divide by dij each element of the uncovered rows or columns, which dij lies on it. This operation creates some new ones to this row or column.
If still a complete optimal assignment is not achieved in this new matrix, then use step 4 and 3 iteratively. By repeating the same procedure the optimal assignment will be obtained.
(To assign one we have add Step 5 which is mentioned below.)