/* The describe is not clear */# include <cstdio> # include <cstring> using namespace STD; const int maxn = 205; int degree [maxn]; int f [maxn]; int N, R; int find (int x) {If (X! = F [x]) {f [x] = find (F [x]);} return f [X];} int main () {While (scanf ("% d", & N, & R )! = EOF) {If (r = 0) {printf ("Not possible \ n"); continue;} // initilize memset (degree, 0, sizeof (degree )); for (INT I = 0; I <= N; I ++) f [I] = I; // make a graph and record the degrees for (INT I = 0; I <r; I ++) {int A, B; scanf ("% d", & A, & B); degree [a] ++; degree [B] ++; If (find ()! = Find (B) f [find (a)] = find (B);} // judge whether the graph is conneted bool OK = true; Int J = 0; for (j = 0 ;! Degree [J]; j ++) for (INT I = J + 1; I <n; I ++) {If (degree [I] & find (j )! = Find (I) {OK = true; break;} If (OK) {for (INT I = 0; I <n; I ++) {If (degree [I] % 2) {OK = false; break ;}} if (OK) printf ("Possible \ n "); else printf ("Not possible \ n");} return 0 ;}