Problem C: Missing Pages

Source file: missing.{c, cpp, java}

Long ago, there were periodicals called newspapers, and these newspapers were printed on paper, and people used to read them, and perhaps even share them. One unfortunate thing about this form of media is that every so often, someone would like an article so much, they would take it with them, leaving the rest of the newspaper behind for others to enjoy. Unfortunately, because of the way that paper was folded, not only would the page with that article be gone, so would the page on the reverse side and also two other pages that were physically on the same sheet of folded paper.

For this problem we assume the classic approach is used for folding paper to make a booklet that has a number of pages that is a multiple of four. As an example, a newspaper with 12 pages would be made of three sheets of paper (see figure below). One sheet would have pages 1 and 12 printed on one side, and pages 2 and 11 printed on the other. Another piece of paper would have pages 3 and 10 printed on one side and 4 and 9 printed on the other. The third sheet would have pages 5, 6, 7, and 8.

When one numbered page is taken from the newspaper, the question is what other pages disappear.

Input:  Each test case will be described with two integers N and P, on a line, where 4 ≤ N ≤ 1000 is a multiple of four that designates the length of the newspaper in terms of numbered pages, and 1 ≤ PN is a page that has been taken. The end of the input is designated by a line containing only the value 0.

Output:  For each case, output, in increasing order, the page numbers for the other three pages that will be missing.

Example input: Example output:
12 2
12 9
8 3
0
1 11 12
3 4 10
4 5 6


ACM Mid-Central Programming Competition 2013