import typing import sys from collections import deque, defaultdict input = lambda: sys.stdin.readline().strip() inf = 10**18 mod = 998244353 def BellmanFord(N, s, Edges): dist = [inf for _ in range(N)] dist[s] = 0 # N-1回緩める for _ in range(N-1): changed = False for v_from, v_to, c in Edges: if dist[v_from] == inf: continue if dist[v_from]+c < dist[v_to]: dist[v_to] = dist[v_from]+c changed = True if not changed: return dist for _ in range(N-1): changed = False for v_from, v_to, c in Edges: # 非連結の場合はあり得る if dist[v_from] == inf: continue # -inf + c が -inf以外の何よりも小さいようなinfの値を選択する if dist[v_from]+c < dist[v_to]: dist[v_to] = -inf changed = True if not changed: return dist return dist def solve(): N, M = map(int, input().split()) A = list(map(int, input().split())) Edges = [] # (v_from, v_to, cost) for _ in range(M): a, b, c = map(int, input().split()) # v_fromを攻略して移動し,v_toへと到達する時間 Edges.append((a-1, b-1, c-A[a-1])) dist = BellmanFord(N, 0, Edges) if dist[-1] == -inf: print('inf') return # Nを攻略する時間を足す print(-dist[-1]+A[-1]) def main(): t = 1 for _ in range(t): solve() main()