#include <bits/stdc++.h>
const int N = 200002, K = 63;
int n, m, i, j, k, a, b, h[N], t[N], v[N];
long long c, w[N], p[N], g[K];
bool vis[N];
void add(int a, int b, long long c) {
  t[++k] = h[a];
  h[a] = k;
  v[k] = b;
  w[k] = c;
}
void init() {
  scanf("%d%d", &n, &m);
  while (m--) {
    scanf("%d%d%lld", &a, &b, &c);
    add(a, b, c);
    add(b, a, c);
  }
}
void Insert(long long x) {
  for (k = K - 1; k >= 0; k--)
    if (x >> k & 1) {
      if (!g[k]) {
        g[k] = x;
        return;
      }
      x ^= g[k];
    }
}
void dfs(int i) {
  vis[i] = 1;
  for (int j = h[i]; j; j = t[j])
    if (!vis[v[j]]) {
      p[v[j]] = p[i] ^ w[j];
      dfs(v[j]);
    } else
      Insert(p[i] ^ p[v[j]] ^ w[j]);
}
void work() {
  dfs(1);
  c = p[n];
  for (k = K - 1; k >= 0; k--)
    if ((c ^ g[k]) < c) c ^= g[k];
  printf("%lld", c);
}
int main() {
  init();
  work();
  return 0;
}
