#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int ii, n, m, d;
scanf("%d %d %d\n", &n, &m, &d);
int miasta[n+1], drogia[d], drogib[d];
memset(miasta, 0, sizeof(miasta));
for (ii = 0; ii < m; ii ++) {
int a, b;
scanf("%d %d", &a, &b);
miasta[a] ++;
miasta[b] ++;
drogia[ii] = a;
drogib[ii] = b;
}
int miasta_ok[n], mok = 0;
int miasta_be[n], mbe = 0;
for (ii = 1; ii <= n; ii ++) {
// zaznaczamy które miasta pasują a które nie
if (miasta[ii] >= d) {
miasta_ok[mok] = ii;
mok++;
} else {
miasta_be[mbe] = ii;
mbe++;
miasta[ii] = 0;
}
}
for (;;) {
int a, b, koniec = 1;
for (ii = 0; ii <m; ) {
a = drogia[ii];
b = drogib[ii];
if (miasta[a] <= 0 && miasta[b] > 0) {
miasta[b] --;
} else if (miasta[a] > 0 && miasta[b] <= 0) {
miasta[a] --;
}
if (miasta[a] <= 0 || miasta[b] <= 0) {
m--;
if (ii == m)
break;
drogia[ii] = drogia[m];
drogib[ii] = drogib[m];
} else {
ii++;
}
}
for (ii = 0; ii < mok; ) {
if (miasta[miasta_ok[ii]] < d) {
// znaczy nie koniec
koniec = 0;
miasta[miasta_ok[ii]] = 0;
mok--;
if (ii == mok)
break;
miasta_ok[ii] = miasta_ok[mok];
} else {
ii ++;
}
}
if (koniec)
break;
}
if (mok == 0) {
printf("NIE\n");
return 0;
}
printf("%d\n", mok);
for (ii = 1; ii <= n; ii ++) {
if (miasta[ii])
printf("%d ", ii);
}
printf("\n");
return 0;
}