Classification of finitely generated abelian groups