#include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef pair pii; typedef pair pll; typedef int _loop_int; #define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i) #define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i) #define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i) #define DEBUG(x) cout<<#x<<": "< P; int n,m; vector g[125252]; int mxd[125252]; int mnd[125252]; int main(){ scanf("%d%d",&n,&m); REP(i,m){ int a,b,c; scanf("%d%d%d",&a,&b,&c); g[a].push_back(pii(b,c)); } REP(i,n)mxd[i]=-1, mnd[i]=1e9; mxd[0] = mnd[0] = 0; priority_queue Q; Q.push(pii(-0,0)); while(Q.size()){ pii P = Q.top(); Q.pop(); int p = P.second; if(mnd[p]!=-P.first)continue; for(pii S:g[p]){ int to = S.first; int nxtd = mxd[p]+S.second; if(mnd[to]>nxtd){ mnd[to] = nxtd; Q.push(pii(-nxtd,to)); } CHMAX(mxd[to],nxtd); } } int ans = n; REP(i,n)if(mnd[i]==mxd[i])ans--; printf("%d %d/%d\n",mxd[n-1],ans,n); return 0; }