Low-Density Parity-Check Codes with Erasures and Puncturing