An introduction to diophantine equations : A problem-based approach.