#include <bits/stdc++.h>
using namespace std;
int const maxN = 205;
int n, m, in[maxN];
bool visited[maxN];
set <pair <int, int>> adj[maxN];
void inp(){
  cin >> n >> m;
  for(int i=1; i<=m; i++){
    int u, v, w; cin >> u >> v >> w;
    adj[u].insert({v, w});
    adj[v].insert({u, w});
  }
}
// 1 0
// 2 2
// 3 -1
// 1 -1

void dfs(int u){
  visited[u] = true;
  for(auto it : adj[u]){
   int v = it.first;
    if(!visited[v]) dfs(v);
  }
}
void Count_In(){
  for(int i=1; i<=n; i++){
    in[i] += adj[i].size();
  }
}
bool check(){
  for(int x=1; x<=n; x++){
    if(in[x]!=0){
      dfs(x); break;
    } //bug7
  }
  for(int i=1; i<=n; i++){
    if(!visited[i] && in[i] != 0) return false;// bug4
    if(in[i] % 2 != 0) return false;
  }
  return true;
}
bool Euler_Cycle(int s, set <pair <int, int>> adj[maxN]){
  if(in[s]==0) return false;//bug6
  stack <pair <int, int>> st;
  vector <pair <int, int>> EC;
  st.push({s, 0});//bug1
  int sum = 0;
  // for(int i=1; i<=n; i++){
  //   cout << i << " : ";
  //   for(auto it : adj[i]){
  //     cout << "(" << it.first << " " << it.second << ")" << " ";
  //   }
  //   cout << endl;
  // }
  while(!st.empty()){
    auto it = st.top();
    auto [u, w] = it;
    if(adj[u].size()){
      auto it2 = *adj[u].begin();
      auto [v, w2] = it2;
      
      st.push(it2);
      adj[u].erase(it2);
      adj[v].erase({u, w2});//bug3
    }
    else{
      st.pop();
      EC.push_back(it);
    }
  }
  
  reverse(EC.begin(), EC.end());
  for(auto it : EC) {
    auto [x, w] = it;
    sum += w;
    if(sum < 0) return false;
  }
  for(int i=0; i<=m; i++){
    cout << EC[i].first;
    if(i != EC.size()-1) cout << " ";
  }
  cout << endl;
  return true;
}
int main() 
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0); 
    inp();
    Count_In();
    if(check()){
      set <pair <int, int>> adj_fake[maxN];//bug2-5
      for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++) adj_fake[j] = adj[j];//bug2
        if(Euler_Cycle(i, adj_fake)) return 0;
      }
    }
    cout << -1 << endl;
    return 0;
}