置换操作
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个长度为n01字符串,你可以至多执行2次修改操作,每次可以将任意一个0替换成1

请问在所有可能的修改方案中,最多有多少个全1子串?

其中子串的定义为原串中任意个\textbf{连续字符}组成的子序列。

输入描述:

输入共两行。

第一行输入一个整数n(1\le n \le 10 ^ 5),表示01字符串的长度。

第二行输入一个长度为n且仅由01构成的字符串,含义如上所示。

输出描述:

输出一个整数,表示修改后全1子串数量的最大值。
示例1

输入

复制
9
110001110

输出

复制
18