public int getMaxFilledBlock(){
        int max = 1;
        for (int step = 2; step < block.size(); step *= 2){
            boolean stepIsReasonable = false;
            for (int i = 0; i < block.size(); i += step){
                boolean noDifference = true;
                for (int k = i; k < i + step - 1; ++k){
                    if (block.get(k) != block.get(k + 1)){
                        noDifference = false;
                        break;
                    }
                }
                if (noDifference){
                    ++max;
                    stepIsReasonable = true;
                    break;
                }
            }
            if (!stepIsReasonable){
                break;
            }
        }
        return max;
    }