彩带是由若干个元素(旗子和气球)组成的链,且其中至少包含一个旗子。彩带的长度是指它所包含的元素个数。
如果对于彩带中的每一个旗子,其左侧连续气球的数量(直到左侧最近的旗子或彩带开头)都等于其右侧连续气球的数量(直到右侧最近的旗子或彩带结尾),则称该彩带是美丽的。
我们用字符 "0" 表示气球,用字符 "1" 表示旗子。例如,彩带 "0001000" 是美丽的,而彩带 "001010" 则不是,因为在第一个旗子的左边有两个气球,而在其右边只有一个气球。需要注意的是,链 "000" 不是一条彩带,因为它不包含任何旗子。
现在给定一条彩带,允许删除其中的某些元素。
你需要编写一个程序,根据给定的彩带描述,求出通过删除元素所能获得的最长美丽彩带。
输入格式
第一行包含一个整数 $n$ — 原始彩带中的元素个数($1 \le n \le 500\,000$)。
第二行包含一个长度为 $n$ 且仅由字符 "0" 和 "1" 组成的字符串,表示彩带的描述。该字符串中至少包含一个字符 "1"。
输出格式
第一行输出一个整数 $m$ — 得到的美丽彩带的长度($1 \le m \le n$)。
第二行输出得到的美丽彩带。
如果存在多个解,输出其中任意一个。
子任务
设 $k$ 为原始彩带中旗子的数量。
| 子任务 | 分数 | $n$ 的限制 | $k$ 的限制 | 依赖子任务 | 评测反馈 |
|---|---|---|---|---|---|
| 1 | 20 | $n \le 15$ | 样例 | 逐测试点 | |
| 2 | 20 | $n \le 1000$ | $k \le 2$ | — | 逐测试点 |
| 3 | 20 | $n \le 1000$ | $k \le 15$ | 样例, 1, 2 | 逐测试点 |
| 4 | 16 | $n \le 1000$ | 样例, 1–3 | 逐测试点 | |
| 5 | 10 | $n \le 100\,000$ | $k \le 50$ | 样例, 1–3 | 首次错误 |
| 6 | 14 | $n \le 500\,000$ | 样例, 1–5 | 首次错误 |
样例
输入样例 1
10 0100100000
输出样例 1
7 0001000
输入样例 2
3 111
输出样例 2
3 111
输入样例 3
7 0100101
输出样例 3
5 01010