import math import heapq l=1 for i in range(1,300): l=math.lcm(l,i) n,m=map(int,input().split()) g=[[]for i in range(n)] for i in range(m): u,v,a,b=map(int,input().split()) u-=1 v-=1 a=a*(l//b) g[u].append((v,a)) g[v].append((u,a)) heap=[] heapq.heappush(heap,(0,0)) sz=1 dst=[l*300*n]*n dst[0]=0 while sz>0: d,x=heapq.heappop(heap) sz-=1 if dst[x]!=d: continue for nxt,w in g[x]: if dst[nxt]>d+w: dst[nxt]=d+w heapq.heappush(heap,(dst[nxt],nxt)) sz+=1 for i in range(1,n): d=dst[i] e=l g=math.gcd(d,e) d//=g e//=g print(d,e)