游游的问号替换
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

游游有一个仅由'0'、'1'、'2'组成的字符串,但其中的一些字符被替换成了'?'。游游已经不记得原串是什么样子了,但她还记得该字符串有以下性质:
1. 字符串的相邻的字符都是不相等的。
2. 字符串的所有长度为3的连续子串,代表的三进制数的数值都是偶数。
游游希望你帮忙还原该串,你能帮帮她吗?

输入描述:

一个仅由'0'、'1'、'2'和'?'组成的字符串。'?'字符代表未知字符。
字符串长度不超过1000。
对于50%的数据,'?'字符的数量不超过2个。对于其余数据则无以上限制。

输出描述:

如果没有合法的解,则说明游游记错了,请输出-1。
否则输出一个合法的字符串。有多解时输出任意即可。
示例1

输入

复制
1?1

输出

复制
121

说明

121作为三进制数,其数值为16,为偶数。
输出101也是合法的。
示例2

输入

复制
0??2

输出

复制
0202

说明

020代表的三进制数为6,202代表的三进制数为20,都是偶数。且字符串没有两个相邻字符相等。
示例3

输入

复制
11?

输出

复制
-1

说明

由于已经有1和1相邻且相等,所以无解。