use Math::BigInt b/c sprintf can't handle >64b