/*
Copyright 2015 Marek "p2004a" Rusinowski
Finding Euler cycle, Hierholzer's algorithm
*/
#include <cstdio>
#include <vector>
using namespace std;
constexpr int MAXN = 1000000;
vector<pair<int, int>> edges[MAXN];
bool used_edge[MAXN];
vector<int> cycle;
void euler(int v) {
while (!edges[v].empty()) {
auto u = edges[v].back();
edges[v].pop_back();
if (used_edge[u.second]) continue;
used_edge[u.second] = true;
euler(u.first);
cycle.push_back(v);
}
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 0; i < m; ++i) {
int a, b;
scanf("%d%d", &a, &b);
edges[--a].emplace_back(--b, i);
edges[b].emplace_back(a, i);
}
for (int i = 0; i < n; ++i) {
if (edges[i].size() % 2 == 1) {
printf("NO\n");
return 0;
}
}
euler(0);
for (int i: cycle) {
printf("%d ", i + 1);
}
printf("\n");
}
LyoKICBDb3B5cmlnaHQgMjAxNSBNYXJlayAicDIwMDRhIiBSdXNpbm93c2tpCiAgRmluZGluZyBFdWxlciBjeWNsZSwgSGllcmhvbHplcidzIGFsZ29yaXRobQoqLwojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0ZXhwciBpbnQgTUFYTiA9IDEwMDAwMDA7Cgp2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGVkZ2VzW01BWE5dOwpib29sIHVzZWRfZWRnZVtNQVhOXTsKdmVjdG9yPGludD4gY3ljbGU7Cgp2b2lkIGV1bGVyKGludCB2KSB7CiAgICB3aGlsZSAoIWVkZ2VzW3ZdLmVtcHR5KCkpIHsKICAgICAgICBhdXRvIHUgPSBlZGdlc1t2XS5iYWNrKCk7CiAgICAgICAgZWRnZXNbdl0ucG9wX2JhY2soKTsKICAgICAgICBpZiAodXNlZF9lZGdlW3Uuc2Vjb25kXSkgY29udGludWU7CiAgICAgICAgdXNlZF9lZGdlW3Uuc2Vjb25kXSA9IHRydWU7CiAgICAgICAgZXVsZXIodS5maXJzdCk7CiAgICAgICAgY3ljbGUucHVzaF9iYWNrKHYpOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBtOwogICAgc2NhbmYoIiVkJWQiLCAmbiwgJm0pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHsKICAgICAgICBpbnQgYSwgYjsKICAgICAgICBzY2FuZigiJWQlZCIsICZhLCAmYik7CiAgICAgICAgZWRnZXNbLS1hXS5lbXBsYWNlX2JhY2soLS1iLCBpKTsKICAgICAgICBlZGdlc1tiXS5lbXBsYWNlX2JhY2soYSwgaSk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBpZiAoZWRnZXNbaV0uc2l6ZSgpICUgMiA9PSAxKSB7CiAgICAgICAgICAgIHByaW50ZigiTk9cbiIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CgogICAgZXVsZXIoMCk7CiAgICBmb3IgKGludCBpOiBjeWNsZSkgewogICAgICAgIHByaW50ZigiJWQgIiwgaSArIDEpOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwp9Cg==