Finite-Gap Solutions