With answers to odd-numbered exercises