#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF2 = 1ll << 60;

vector<ll> Bellman_Ford(vector<vector<pair<ll,ll>>> &graph,int start){
    int n=graph.size(),x;
    vector<ll> dist(n,INF2);
    queue<int> next;
    dist[start]=0;
    int cnt=n-1;
    while(cnt--){
        for(int i=0;i<n;i++){
            if(dist[i]==INF2)continue;
            for(int j=0;j<graph[i].size();j++){
                if(dist[i]+graph[i][j].second<dist[graph[i][j].first]){
                    dist[graph[i][j].first]=dist[i]+graph[i][j].second;
                }
            }
        }
    }
    for(int i=0;i<n;i++){
        if(dist[i]==INF2)continue;
        for(int j=0;j<graph[i].size();j++){
            if(dist[graph[i][j].first]!=-INF2&&
                dist[i]+graph[i][j].second<dist[graph[i][j].first]){
                dist[graph[i][j].first]=-INF2;
                next.push(graph[i][j].first);
            }
        }
    }
    while(!next.empty()){
        x=next.front();
        next.pop();
        for(int j=0;j<graph[x].size();j++){
            if(dist[graph[x][j].first]!=-INF2){
                dist[graph[x][j].first]=-INF2;
                next.push(graph[x][j].first);
            }
        }
    }
    return dist;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m, v, u, c;
    cin >> n >> m;
    vector<vector<pair<ll,ll>>> g(2 * n);
    for(int i = 0; i < n; i++){
        cin >> c;
        g[i].emplace_back(i + n, -c);
    }
    for(int i = 0; i < m; i++){
        cin >> u >> v >> c;
        g[--u + n].emplace_back(--v, c);
    }
    auto dp = Bellman_Ford(g, 0);
    ll ans = dp.back();
    if(ans == -INF2){
        cout << "inf\n";
    }else{
        cout << -ans << '\n';
    }
}