#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct input {
int num;
int mod;
} a[10000 + 10];
int n;
int m;
bool odd(int x) {
if (x < 0)
x *= -1;
if (x % 2)
return true;
return false;
}
bool even(int x) {
if (x < 0)
x *= -1;
if (x % 2 == 0)
return true;
return false;
}
bool operator<(input a, input b) {
if (a.mod < b.mod)
return true;
if (a.mod == b.mod) {
if (odd(a.num) && even(b.num))
return true;
if (odd(a.num) && odd(b.num) && a.num > b.num)
return true;
if (even(a.num) && even(b.num) && a.num < b.num)
return true;
}
return false;
}
int main() {
while (scanf("%d %d", &n, &m)) {
if (n == 0 && m == 0) {
printf("0 0\n");
break;
}
printf("%d %d\n", n, m);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i].num);
a[i].mod = a[i].num % m;
}
sort(a, a + n);
for (int i = 0; i < n; i++)
printf("%d\n", a[i].num);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBpbnB1dCB7CglpbnQgbnVtOwoJaW50IG1vZDsKfSBhWzEwMDAwICsgMTBdOwoKaW50IG47CmludCBtOwoKYm9vbCBvZGQoaW50IHgpIHsKCWlmICh4IDwgMCkKCQl4ICo9IC0xOwoJaWYgKHggJSAyKQoJCXJldHVybiB0cnVlOwoJcmV0dXJuIGZhbHNlOwp9Cgpib29sIGV2ZW4oaW50IHgpIHsKCWlmICh4IDwgMCkKCQl4ICo9IC0xOwoJaWYgKHggJSAyID09IDApCgkJcmV0dXJuIHRydWU7CglyZXR1cm4gZmFsc2U7Cn0KCmJvb2wgb3BlcmF0b3I8KGlucHV0IGEsIGlucHV0IGIpIHsKCWlmIChhLm1vZCA8IGIubW9kKQoJCXJldHVybiB0cnVlOwoKCWlmIChhLm1vZCA9PSBiLm1vZCkgewoJCWlmIChvZGQoYS5udW0pICYmIGV2ZW4oYi5udW0pKQoJCQlyZXR1cm4gdHJ1ZTsKCQlpZiAob2RkKGEubnVtKSAmJiBvZGQoYi5udW0pICYmIGEubnVtID4gYi5udW0pCgkJCXJldHVybiB0cnVlOwoJCWlmIChldmVuKGEubnVtKSAmJiBldmVuKGIubnVtKSAmJiBhLm51bSA8IGIubnVtKQoJCQlyZXR1cm4gdHJ1ZTsKCX0KCglyZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkgewoJd2hpbGUgKHNjYW5mKCIlZCAlZCIsICZuLCAmbSkpIHsKCQlpZiAobiA9PSAwICYmIG0gPT0gMCkgewoJCQlwcmludGYoIjAgMFxuIik7CgkJCWJyZWFrOwoJCX0KCgkJcHJpbnRmKCIlZCAlZFxuIiwgbiwgbSk7CgoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJCXNjYW5mKCIlZCIsICZhW2ldLm51bSk7CgkJCWFbaV0ubW9kID0gYVtpXS5udW0gJSBtOwoJCX0KCQlzb3J0KGEsIGEgKyBuKTsKCQlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCQkJcHJpbnRmKCIlZFxuIiwgYVtpXS5udW0pOwoKCX0KCXJldHVybiAwOwp9Cg==