B. Good Array

传统 1000 ms 1024 MiB
标准 IO
文本比较

题目描述

对于一个长度为 nn 的数组 aa 和一个正整数 mm,称数组 aa好的当存在一个正整数 bb,使得所有小于等于 mm 的正整数中,有且仅有在数组 aa 中出现的那些是 bb 的因子。

例如,当 a=[1,2,3],m=5a=[1,2,3],m=5 的时候就是一个好的数组,因为可以选取 b=6b=6。但是当 a=[2,3],m=5a=[2,3],m=5 的时候就不是一个好的数组,因为当 b=6b=6 的时候,数组 aa 中缺少了 bb 的一个因子 11。当 a=[1,2,3,4],m=6a=[1,2,3,4],m=6不能选取 b=4b=4,因为数组 aa 中的数字 33 不是 bb 的一个因子。

给定一个长度为 nn 的数组 aa 和一个正整数 mm,请判断 aa 的每一个前缀是否是一个好的数组。

输入格式

第一行,一个整数 t(1t2×104)t(1\le t\le 2\times 10^4),代表数据组数。

对于每组数据:

第一行,两个整数 n,m(1n105;1m107)n,m(1\le n \le 10^5;1\le m\le 10^7),代表数组 aa 的长度,mm 的含义与题目中一致。

第二行,一个长度为 nn 的数组 a1,,an(1aim)a_1,\dots,a_n(1\le a_i\le m),代表数组 aa

保证同一测试点内 nn 的总和不超过 10510^5

输出格式

对于每组数据,输出一个长度为 nn 的二进制字符串 ss。如果 si=1s_i=1 代表数组 aa 长度为 ii 的前缀是一个好的数组;如果 si=0s_i=0 代表数组 aa 长度为 ii 的前缀不是一个好的数组。

样例

输入样例

4
6 16
2 1 4 6 3 12
8 10000000
1 2 8 4 16 9999995 1024 1
3 5
3 2 1
3 6
3 2 1

输出样例

011001
11011000
001
000

样例解释
样例第一组数据中,对于数组 aa 的每一个前缀,bb 的值分别为 0,2,4,0,0,240,2,4,0,0,2400 代表 bb 的值不存在)。