Regarding the warning, how about `ull`?
Actually I think `(unsigned) long` would be enough now, cannot remember why I chose `ll`.