Statement
당신은 최소 1개 이상의 주사위를 원하는 만큼 제작할 수 있다. 각 주사위는 개의 면을 가지며, 주사위의 각 면에는 이상 이하의 정수를 마음대로 적을 수 있다. 단, 각 주사위에서 개 면에 적힌 숫자는 서로 달라야 한다.
만들어진 주사위들을 동시에 모두 던졌을 때, 어떤 면들이 나오더라도 나온 모든 숫자들을 Bitwise OR한 값이 항상 가 되도록 주사위를 구성하고자 한다.
최소 개수의 주사위로 위 조건을 만족시킬 수 있을지 구해보자.
Input
첫 번째 줄에 각 주사위의 면의 개수를 나타내는 정수 과 목푯값을 나타내는 정수 가 주어진다.
Output
만약 조건을 만족하는 주사위 제작 방법이 있다면 첫 번째 줄에 필요한 주사위의 최소 개수 를 출력한다. 그다음 줄부터 개 줄에 걸쳐 각 주사위의 면에 적은 개의 정수를 출력한다. 가능한 주사위 제작 방법이 여러 가지라면 그중 아무것이나 출력한다.
만약 조건을 만족하는 주사위 제작 방법이 존재하지 않는다면 -1을 출력한다.
Constraints
Samples
예제 1
입력
3 14
출력
3
2 6 10
4 6 12
8 10 12
예제 2
입력
1 62
출력
1
62
Note
Bitwise OR 연산은 두 정수를 이진수로 나타냈을 때, 각 자리의 비트를 비교하여 둘 중 하나라도 1이면 1, 둘 다 0일 때만 0을 반환하는 연산이다.