F、 天选子
题号:NC211231
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

某高校,上体育喜欢玩一个游戏。现在一共有N个同学,每个同学手上有一张纸条,纸条上分别写着是1-N的数字,现在这N个同学按照纸条上的数字进行升序排序,且他们是排在同一行的。下面是游戏规则:

从头开始一至二报数,凡是报到二的出列,剩下的向小序号方向靠拢,同样保持升序,再从头开始一至三报数,凡是报到三的出列,剩下的向小序号方向靠拢,同样保持升序,接下来继续从头开始一至二报数,凡是报到二的出列,剩下的向小序号方向靠拢,同样保持升序,再从头开始一至三报数,凡是报到三的出列,剩下的向小序号方向靠拢,同样保持升序……如此循环,一直报数,直到剩下的人数不超过三人为止。当然剩下的同学依旧向小序号方向靠拢,同样保持升序。

然后将剩下不超过三名同学的编号相加得到一个数,若是大于M则输出这不超过三名同学各自的编号。否则输出M和这不超过三名同学编号之和的绝对值。

输入描述:

只有一行,由N(0<N<5001)和M组成

输出描述:

只有一行,若是大于M则输出队列还剩下的同学各自的编号,由一个空格隔开。否则输出M和这剩下同学编号之和的差的绝对值

示例1

输入

复制
20 9

输出

复制
1 7 19

说明

输出:
最后队列中还剩编号为1、7、19的同学,他们的编号加起来和为27,大于9,即为大于M,因此输出1、7、9