#abc146f. [abc146_f]Sugoroku

[abc146_f]Sugoroku

题目描述

高桥正在玩一个名为Sugoroku的棋盘游戏。

棋盘上有N+1N+1个方格,编号从00NN。高桥从方格00开始,并且他必须恰好停在方格NN才能赢得游戏。

游戏使用一个带有MM个数字(从11MM)的轮盘。在每一轮中,高桥旋转轮盘。如果在他位于方格ss时数字xx出现,他就会移动到方格s+xs+x。如果这使他超过方格NN,他就会输掉游戏。

此外,一些方格是“游戏结束方格”。如果他停在其中一个方格上,他也会输掉游戏。给定一个长度为N+1N+1的字符串SS,表示哪些方格是“游戏结束方格”。对于每个ii (0iN)(0 \leq i \leq N),如果S[i]=1S[i] = 1,则方格ii是“游戏结束方格”,否则不是。

找出轮盘出现的数字序列,其中高桥可以以最少的轮次赢得游戏。如果存在多个这样的序列,则找出字典序最小的序列。如果高桥无法赢得游戏,则输出1-1

约束条件

  • 1N1051 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • S=N+1|S| = N + 1
  • SS由字符 01 组成。
  • S[0]=S[0] = 0
  • S[N]=S[N] = 0

输入

输入数据从标准输入读取,其格式如下:

NN MM SS

输出

如果高桥可以赢得游戏,以空格分隔的形式输出轮盘中出现的数字序列中字典序最小的序列。

如果高桥无法赢得游戏,则输出1-1

示例输入 1

9 3
0001000100

示例输出 1

1 3 2 3

如果按照顺序出现数字11332233,高桥可以通过方格114466到达方格99。他无法在三次或更少的轮次内到达方格99,而这是他在四次轮次内到达方格99的字典序最小序列。

示例输入 2

5 4
011110

示例输出 2

-1

高桥无法到达方格55

示例输入 3

6 6
0101010

示例输出 3

6