21 cifre sono un pò troppe, il limite per un long è questo:

-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Infatti la sua dimensione è 64 bit.

Quello che devi fare è leggere la stringa come sta e passarla a un BigInteger e gestire il numero con quello.