有 $N$ 张牌排成一排。初始时,如果字符串 $S$ 的第 $i$ 个字符为 1,则从左往右数第 $i$ 张牌正面朝上;如果为 0,则正面朝下。你可以执行最多 $10^6$ 次以下操作:
- 将最右侧的牌移动到最左侧。如果移动的牌是正面朝上的,则翻转从左往右数第 $A_1, A_2, \dots, A_P$ 张牌。此外,你可以选择翻转从左往右数第 $B_1, B_2, \dots, B_Q$ 张牌,或者什么都不做。
经过这些操作,你希望最终从左往右数第 $i$ 张牌在字符串 $T$ 的第 $i$ 个字符为 1 时正面朝上,为 0 时正面朝下。请判断是否能在 $10^6$ 次或更少的操作内满足条件。如果可以,请输出能以最少操作次数达到该条件的序列。
输入格式
输入通过标准输入按以下格式提供:
$N$ $S$ $T$ $P$ $A_1 \ A_2 \ \dots \ A_P$ $Q$ $B_1 \ B_2 \ \dots \ B_Q$
- 所有数值输入均为整数。
- $1 \le N \le 5000$
- $S$ 和 $T$ 均为长度为 $N$ 且仅由 0 和 1 组成的字符串。
- $S \neq T$
- $1 \le P, Q \le N$
- $1 \le A_1 < A_2 < \dots < A_P \le N$
- $1 \le B_1 < B_2 < \dots < B_Q \le N$
输出格式
如果无法在 $10^6$ 次或更少的操作内满足条件,输出 -1。如果可以满足,请按以下格式输出操作次数最少的操作序列:
$M$ $U$
其中 $M$ 是操作次数,$U$ 是一个长度为 $M$ 且仅由 0 和 1 组成的字符串,表示操作序列。如果 $U$ 的第 $i$ 个字符为 1,意味着在第 $i$ 次操作中,翻转从左往右数第 $B_1, B_2, \dots, B_Q$ 张牌。如果字符为 0,则不执行该翻转操作。
样例
样例输入 1
5 00001 00111 3 1 2 3 2 3 5
样例输出 1
4 1001
样例输入 2
4 0110 1000 2 1 2 4 1 2 3 4
样例输出 2
-1
说明
对于第一个样例,在第一次操作中,将最右侧的牌移到最左侧,牌的状态变为 10000。由于移动的牌是正面朝上的,我们翻转从左往右数第 $A_1, A_2, A_3$(第 1、2、3 张)牌,结果变为 01100。接下来,如果我们选择翻转从左往右数第 $B_1, B_2$(第 3、5 张)牌,状态变为 01001。继续按照输出样例执行,第二次操作后状态变为 01000,第三次操作后变为 00100,第四次操作后变为 00111。没有更少的操作次数能达到此结果,因此该输出样例是正确的。
对于第二个样例,无法在 $10^6$ 次操作内满足条件。