P.S pripadne este pred tym while(intreader.hasLeft()) si testovat ci M neni 2 a ak je tak to urobit uplne bez cyklu "for (int i = 0 ; i < log2(M); i++)" a bez rotacie num>>1 ptz to nema vyznam ak M=2. Tu prvu cast num / M zmenis na num/2 (optimalnejsie). A potom do else vetvy (pre M>2) to urobit normalne alebo este rozdelit pre M==4 nerobit for ale len 2x za sebou nieco, a az pre vyssie M v dalsom else robit potom cykly apod.