最长回文子串
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

 山遮影乱雀飞山,乱雀飞山落雨绵。 绵雨落山飞雀乱,山飞雀乱影遮山。



Capps 非常喜欢最长回文子串,他手上有一个长度为 n 的数组 a,听说你隔壁是构造王国,想必你也是一位构造大师,便想请你构造一个 01字符串 s,同时满足以下两个条件:

  • s 的长度为 n
  •  对于 \forall i \in [1,n]s 里以下标 i 为中心的最长回文子串长度为 a_i

如果不存在 01字符串满足要求,输出 -1,否则输出一个满足要求的 01字符串,如果有多个答案满足要求,输出任意一个均可

注意

  •  字符串 ts 的一个回文子串当且仅当将 t 中的字符反向排列所得到的字符串与 t 相同并且 ts 的一个子串
  •  字符串中任意个连续的字符组成的子序列称为该字符串的子串

输入描述:

本题有多个样例,第一行一个样例数 T (1\le T \le 10^5)

对于每个样例:

第一行一个整数 n (1\le n \le 2 \times 10^5),表示数组 a 的长度。

接下来一行 n 个整数,第 i 个整数为 a_i (1\le a_i \le n) ,保证 a_i奇数

对于所有样例保证 \sum n \le 2\times 10^5

输出描述:

对于每个样例:如果存在 01字符串满足要求,输出一行一个长度为 n01字符串,否则输出 -1。共输出 T 行。
示例1

输入

复制
4
3
1 1 1
4
1 3 1 3
6
1 1 1 5 3 1
6
1 3 1 5 1 1

输出

复制
001
-1
-1
101110

说明

对于样例1,“000”不能作为答案,因为 a_2=1 但是“000”的以下标 2 为中心的最长回文子串长度为 3