Algorithms for Integer Programming