static void run(boolean[] bits) {
        int falseCount = 0;
        int start = 0;
        //        for(int i = 0; i < bits.length; i ++) {
        //            if(bits[i]) {
        //                start ++;
        //            } else {
        //                break;
        //            }
        //        }

        for (int i = 0; i < bits.length; i++) {
            if (bits[i]) {
                falseCount--;
            } else {
                falseCount++;
            }

            if (falseCount <= 0) {
                //restart
                start = i + 1;
                falseCount = 0;
            } else {
                //always count the sequence containing max number of false
                if (falseCount > max) {
                    met[0] = start;
                    met[1] = i;
                    max = falseCount;
                }
            }
        }



        //        for(int i =met[0]; i <=  met[1]; i ++ ) {
        //            bits[i] = !bits[i];
        //        }

        int count = 0;
        for (int i = 0; i < bits.length; i++) {
            if (i >= met[0] && i <= met[1]) {
                if (!bits[i])
                    count++;
            } else {
                if (bits[i])
                    count++;
            }
        }


        //        System.out.print(met[0]);
        //        System.out.print(met[1]);

        System.out.print(count);
    }