147. [CPE] Sort! Sort!! and Sort!!!

I'm a slow walker, but I never walk backwards.

Task Description
[CPE] Sort! Sort!! and Sort!!!
給你兩個整數 N (0<N<=10000), M (0 < M <= 10000),你要依照某些規則排序N個整數。
先利用每個數字除以M的餘數由小到大排,若排序中比較的兩數為一奇一偶且兩數除以M 的餘數相等,
則奇數要排在偶數前面。若兩奇數除以M餘數大小相等,則原本數值較大的奇數排在前面。
同樣的,若兩偶數除以M餘數大小相等,則較小的偶數排在前面。至於負數的餘數計算和 C 語言裡的定義相同,
即負數的餘數小於等於0。例如 -100 MOD 3 = -1, -100 MOD 4 = 0 依此類推。
請運用struct結構如下所附:

1
2
3
4
5
typedef struct List{
    int num;
    int mod;
    int Even_Odd;
}List;

Input Format
輸入測資檔包含 20 筆的輸入測資。每組測資一開始包含兩個整數 N, M。
接下來的 N 行裡每一行只包含一個整數。這些整數保證都可以被存在 32-bit 有號整數裡。輸入以 N=0, M=0代表結束。

Output Format
對於每一組輸入請輸出 N+1 行整數。第一行為兩個整數 N, M。
接下來的 N 行都包含一個整數、及上述的數字按上述規則排列後的結果。對於輸入測資尾端的兩個 0, 0 請也輸出兩個空白分隔的 0, 0。

Sample Input

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
15 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0 0

Sample Output

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
15 3
15
9
3
6
12
13
7
1
4
10
11
5
2
8
14
0 0

Submit

Login

Testdata Set

Download Testdata