hard, not handle largest num which exeed int range