text: fwrite(pf, 1, 100000, stdout), *(o1 = pf)++ = c : *o1++ = c); } int wbuf[25], _wl = 0; template <class T> inline void write(T x) { if (x == 0) { putchar(48); return; } if (x < 0) putchar('-'), x = -x; _wl = 0; while (x) wbuf[++_wl] = x % 10, x /= 10; for (int i = _wl; i >= 1; i--) putchar(wbuf[i] + 48); } template <class T> inline void writeln(T x) { write(x); puts(""); } template <class T> inline void writeln(T x, char c) { write(x); putchar(c); } template <class T> inline void writeln(char c, T x) { putchar(c); write(x); } template <class T> inline void chkmax(T &x, const T y) { x > y ?x = x : x = y; } template <class T> inline void chkmin(T &x, const T y) { x < y ?x = x : x = y; } template <class T> inline T max(const T &x, const T &y, const T &z) { return x > y ?(x > z ?x : z) : (y > z ?y : z); } inline void file(string str) { freopen((str + ".in").c_str(), "r", stdin); freopen((str + ".out").c_str(), "w", stdout); } struct Vector { double x, y; Vector(double _x = 0, double _y = 0) : x(_x), y(_y) {} inline Vector Vary(void) { return Vector(x, -y); } inline bool operator<(const Vector &rhs) const { return x == rhs.x ?y < rhs.y : x < rhs.x; } inline Vector operator-(const Vector &rhs) const { return Vector(x - rhs.x, y - rhs.y); } inline Vector operator+(const Vector &rhs) const { return Vector(x + rhs.x, y + rhs.y); } inline Vector operator*(const double &rhs) const { return Vector(x * rhs, y * rhs); } inline Vector operator/(const double &rhs) const { return Vector(x / rhs, y / rhs); } inline Vector operator*(const Vector &rhs) const { return Vector(x * rhs.x - y * rhs.y, x * rhs.y + y * rhs.x); } }; } // namespace Base using namespace Base; const int N = 1e6 + 100; int x[N], y[N], w[N], s[N], v[N]; bool in[N * 2]; vector<pair<int, int> > e[N]; vector<int> res; int n, m; int main() { read(n); read(m); for (register int i = (1); i <= (m); i++) { read(x[i]); read(y[i]); w[i] = 1; s[x[i]]++; s[y[i]]++; e[max(x[i], y[i])].