#S1009. 一维扫雷

一维扫雷

题目描述

西西酱最近迷上了扫雷游戏,但她觉得扫雷好难,于是决定开发一个只有一行的扫雷。 她所设计的扫雷地图可以用一个长度为 NN 的字符串表示,仅包含星号字符 '*' 与数字字符 '0', '1', '2'。 其中,星号字符代表地雷,数字字符代表空地,同时它也表示相邻位置中地雷的数量。 这个字符串必须合法,例如:

  • "*000000*""*******""*0001*2*" 是合法的,符合上述描述。
  • "*000*1*0*" 是非法的,因为中间的数字 '1' 的相邻位置不存在任何地雷。
  • "*1*0001*" 是非法的,因为第一个数字 '0' 的相邻位置存在非设定地雷。
  • "*2*1*02*" 是非法的,甚至没有一个数字标记的地雷数量是正确的。

西西酱已经生成了所有长度为 NN 的合法地图,并按字典序的顺序,从 0 开始编号并保存了起来。 现在她想调出编号为 KK 的地图,请你帮她绘制出这张地图,或告诉她编号有误。

  • N=4,K=0N=4, K=0,地图为 "*1*1*"
  • N=4,K=1N=4, K=1,地图为 "*1*2*"
  • N=4,K=2N=4, K=2,地图为 "*2*1*"
  • N=4,K=3N=4, K=3,地图为 "*2*2*"

注意: '*', '0', '1', '2' 的 ASCII 码分别为 42, 48, 49, 50。

输入格式

第一行一个整数 TT,表示数据组数。 对于每组数据,仅包含一行两个整数 N,KN, K,表示字符串的长度以及待查询的地图编号。

输出格式

对于每组数据,输出一行,一个字符串,表示编号为 KK 的地图,或输出 -1 表示该地图不存在。

输入数据 1

7
7 71
1 0
1 1
1 2
20 100000
47 47
60 1000000000000000000

输出数据 1

0001*2*
*
0
-1
***2*****2**11******
*****************************************11*2*1
1**2*2******11*11*11**2***2*11***2*11*101*******************

样例说明 注意,N=1N=1 时的合法字符串只有 "*""0" 两种。

数据范围与提示

所有测试数据的范围和特点如下表所示:

测试点编号 NN \le KK \le
1 ~ 3 10 10610^{6}
4 ~ 9 20
10 ~ 12 60
13 ~ 20 101810^{18}

对于所有测试点,保证 $1 \le T \le 10, 1 \le N \le 60, 0 \le K \le 10^{18}$。