#include "bits/stdc++.h"
#define ll long long
#define pb push_back
using namespace std;
ll n;
int minDist(int dist[],bool Tset[]){
    int mini=INT_MAX,index;
    for(int i=0;i<n;i++){
        if(!Tset[i]&&dist[i]<mini){
            mini=dist[i];
            index=i;
        }
    }
    return index;
}

void solve() {
    ll l,m,prvi,poslednji;
    cin>>n>>m;
    map<ll,vector<ll> > mapa;
    ll led[n][n];
    for(ll i=0;i<m;i++){
        cin>>prvi>>poslednji>>l;
        mapa[prvi-1].pb(poslednji-1);
        mapa[poslednji-1].pb(prvi-1);
        led[prvi-1][poslednji-1]=l;
        led[poslednji-1][prvi-1]=l;
    }
    int dist[n];
    bool Tset[n];
    for(int i=0;i<n;i++){
        dist[i]=INT_MAX;
        Tset[i]=false;
    }
    cin>>prvi>>poslednji;
    dist[prvi-1]=0;
    for(int i=0;i<n;i++){
        int mali=minDist(dist,Tset);
        Tset[mali]=true;
        for(int j=0;j<mapa[i].size();j++){
            if(!Tset[mapa[mali][j]]&&dist[mali]+((dist[mali]+led[mali][mapa[mali][j]])%2)<dist[mapa[mali][j]])
                dist[mapa[mali][j]]=dist[mali]+((dist[mali]+led[mali][mapa[mali][j]])%2);
        }
    }
    cout<<dist[poslednji-1];
}

int main () {
    int t=1;
    /*
    cin>>t;
    //*/
    while(t--) {
        solve();
    }
}