#include<iostream>
#include<algorithm>
#include<vector>
using lint=int64_t;
using namespace std;

int main()
{
	int N,M;
	cin >> N >> M;

	vector<vector<pair<int,lint>>> edge(N);
	for(int i=0;i<M;i++)
	{
		int a,b;
		lint c;
		cin >> a >> b >> c;
		a--;
		b--;
		c=-c;
		edge[a].push_back(make_pair(b,c));
	}

	lint dist[1010]={};
	const lint inf=1e18;
	for(int i=0;i<N;i++)
		dist[i]=inf;
	dist[0]=0;

	bool negative=false;
	for(int i=0;i<2*N;i++)
	{
		bool update=false;
		for(int j=0;j<N;j++)
		{
			if(dist[j]==inf)
				continue;

			for(auto&& k:edge[j])
			{
				if(dist[k.first]>dist[j]+k.second)
				{
					dist[k.first]=dist[j]+k.second;
					update=true;
					if(i==2*N-1 && k.first==N-1)
						negative=true;
				}
			}
		}
		if(!update)
			break;
	}

	if(negative)
		cout << "inf" << endl;
	else
		cout << -dist[N-1] << endl;
	return 0;
}
