gccなら、配列の添え字に変数使える。
でも、>>1のソースだと、Mを初期化する前に配列宣言してるから、Mの初期値(不定)の
サイズの配列が確保される。
Mの値とlimitによっては、スタックが足りんだろうな。