#include<cstdio>
#include<set>
#include<map>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<vector>

using namespace std;
const int maxn = 3005;
const long long inf = 1000000000007;
struct Node{
	vector<int> t;
	vector<int> c;
}node[maxn];
int vis[maxn];
long long ans[maxn];
int to[maxn*maxn];
void init()
{
	for(int i=0;i<maxn;i++)
	{
		ans[i]=-inf;
		vis[i]=0;
	}
}
long long BFS(int n,int m)
{
	to[0]=1;
	int l=0;
	int r=0;
	ans[1]=0;
	while(l<=r)
	{
		int temp=to[l];
		for(int i=0;i<node[temp].t.size();i++)
		{
			if(vis[node[temp].t[i]]<=m)
			{
				vis[node[temp].t[i]]++;
				ans[node[temp].t[i]]=max(ans[temp]+node[temp].c[i],ans[temp]);
				to[++r]=node[temp].t[i];
			}
		}
		l++;
	}
	return ans[n];
}
int main(){
	init();
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<m;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		node[a].t.push_back(b);
		node[a].c.push_back(c);
	}
	long long ans1=BFS(n,n-1);
	long long ans2=BFS(n,n);
	if(ans1!=ans2)
	{
		printf("inf\n");
	}
	else printf("%d\n",ans2);
	return 0;
} 