return -1 if no sol