## https://yukicoder.me/problems/no/2712 MAX_INT = 10 ** 18 def main(): N, M = map(int, input().split()) A = list(map(int, input().split())) edges = [] for _ in range(M): a, b, c = map(int, input().split()) edges.append((a, b, c)) new_edges = [] for a, b, c in edges: new_edges.append((a, b, -A[b - 1] + c)) new_edges.append((0, 1, -A[0])) # ベルマンフォード costs = [MAX_INT] * (N + 1) costs[0] = 0 for i in range(N + 1): for a, b, c in new_edges: new_cost = costs[a] + c if costs[b] > new_cost: if i >= N: costs[b] = -MAX_INT else: costs[b] = new_cost if costs[N] == -MAX_INT: print("inf") else: print(-costs[N]) if __name__ == "__main__": main()