from heapq import heappush,heappop n,m = list(map(int,input().split())) P = list(map(int,input().split())) if m == 0: print(-1) exit() uv = [[] for i in range(n)] p = [10**14 for i in range(n)] s = [[10**18 for i in range(n)] for i in range(n)] p[0] = 0 for i in range(m): u,v,c = list(map(int,input().split())) u,v = u-1,v-1 uv[u].append([v,c]) change = [0 for i in range(n)] change[0] = 1 for _ in range(n): for u in range(n): if change[u] == 0: continue change[u] = 0 for v,c in uv[u]: if p[v] > p[u]+c: change[v] = 1 p[v] = min(p[v],p[u]+c) for i in range(n): for u in range(len(uv[i])): uv[i][u][1] += p[i] - p[uv[i][u][0]] for i in range(n): pq = [0] d = {0:[i]} s[i][i] = 0 while len(pq): w = heappop(pq) while len(d[w]): u = d[w].pop() if s[i][u] < w: continue for v,c in uv[u]: if s[i][v] <= w+c: continue if w+c not in d: heappush(pq,w+c) d[w+c] = [] s[i][v] = w+c d[w+c].append(v) c = 10**18 for i in range(n): for u in range(n): if i == u: continue s[i][u] += p[u]-p[i]+P[i]+P[u] c = min(c,s[i][u]) ans = 0 for i in range(n): for u in range(n): if i == u: continue if s[i][u] == c: ans += 1 print(c,ans)