finite-gap solutions