//NickyRio
#include <bits/stdc++.h>
using namespace std;
#define N 1010
#define M 10010
const double esp = 1e-5;
int n, m, trace[N], u[M], v[M], c[M];
double d[N];
bool Ok(int x, int y) {
while (x != 1){
x = trace[x];
if (x == 0) return false;
if (x == y) return true;
}
return false;
}
bool FordBellman(double mid) {
for (int i = 1; i<=n; i++) d[i] = 1e18;
d[1] = 0;
memset(trace, 0, sizeof trace);
for (int i = 0; i<n; i++) {
for (int j = 0; j<m; j++) {
int x = u[j]; int y = v[j];
if (d[y] > d[x] + c[j] - mid) {
d[y] = d[x] + c[j] - mid;
if (Ok(x, y)) {
return true;
}
trace[y] = x;
}
}
}
return false;
}
int main() {
//freopen("E:\\RoadToAPIO\\CPP\\PVOI14_3\\input.txt","r",stdin);
//freopen("E:\\RoadToAPIO\\CPP\\PVOI14_3\\output.txt","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for (int i = 0; i<m; i++) {
cin>>u[i]>>v[i]>>c[i];
}
double l = 0;
double r = 1e10;
double cur = 0;
while (r - l >= esp) {
double mid = (l + r) / 2;
if (!FordBellman(mid)) {
cur = mid;
l = mid;
}else r = mid;
}
if (abs (cur - 1e10) <=esp) {
cout<<"NO TOUR";
}else
cout<<fixed<<setprecision(2)<<cur;
}
Ly9OaWNreVJpbwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIE4gMTAxMAojZGVmaW5lIE0gMTAwMTAKY29uc3QgZG91YmxlIGVzcCA9IDFlLTU7CgppbnQgbiwgbSwgIHRyYWNlW05dLCB1W01dLCB2W01dLCBjW01dOwpkb3VibGUgZFtOXTsKCmJvb2wgT2soaW50IHgsIGludCB5KSB7CiAgICB3aGlsZSAoeCAhPSAxKXsKICAgICAgICB4ID0gdHJhY2VbeF07CiAgICAgICAgaWYgKHggPT0gMCkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmICh4ID09IHkpIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CmJvb2wgRm9yZEJlbGxtYW4oZG91YmxlIG1pZCkgewogICAgZm9yIChpbnQgaSA9IDE7IGk8PW47IGkrKykgZFtpXSA9IDFlMTg7CiAgICBkWzFdID0gMDsKICAgIG1lbXNldCh0cmFjZSwgMCwgc2l6ZW9mIHRyYWNlKTsKICAgIGZvciAoaW50IGkgPSAwOyBpPG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqPG07IGorKykgewogICAgICAgICAgICBpbnQgeCA9IHVbal07IGludCB5ID0gdltqXTsKICAgICAgICAgICAgaWYgKGRbeV0gPiBkW3hdICsgY1tqXSAtIG1pZCkgewogICAgICAgICAgICAgICAgZFt5XSA9IGRbeF0gKyBjW2pdIC0gbWlkOwogICAgICAgICAgICAgICAgaWYgKE9rKHgsIHkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0cmFjZVt5XSA9IHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KaW50IG1haW4oKSB7CiAgICAvL2ZyZW9wZW4oIkU6XFxSb2FkVG9BUElPXFxDUFBcXFBWT0kxNF8zXFxpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICAvL2ZyZW9wZW4oIkU6XFxSb2FkVG9BUElPXFxDUFBcXFBWT0kxNF8zXFxvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBjaW4+Pm4+Pm07CiAgICBmb3IgKGludCBpID0gMDsgaTxtOyBpKyspIHsKICAgICAgICBjaW4+PnVbaV0+PnZbaV0+PmNbaV07CiAgICB9CiAgICBkb3VibGUgbCA9IDA7CiAgICBkb3VibGUgciA9IDFlMTA7CiAgICBkb3VibGUgY3VyID0gMDsKICAgIHdoaWxlIChyIC0gbCA+PSBlc3ApIHsKICAgICAgICBkb3VibGUgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYgKCFGb3JkQmVsbG1hbihtaWQpKSB7CiAgICAgICAgICAgIGN1ciA9IG1pZDsKICAgICAgICAgICAgbCA9IG1pZDsKICAgICAgICB9ZWxzZSByID0gbWlkOwogICAgfQogICAgaWYgKGFicyAoY3VyIC0gMWUxMCkgPD1lc3ApIHsKICAgICAgICBjb3V0PDwiTk8gVE9VUiI7CiAgICB9ZWxzZQogICAgY291dDw8Zml4ZWQ8PHNldHByZWNpc2lvbigyKTw8Y3VyOwp9Cg==