#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct canal {
	int x, y, t;
};
 
int main() {
	int n, m;
	vector <canal> canals;
	cin >> n >> m;
	canal r;
	for (int i=0; i < m; i++)
	{
		cin >> r.x >> r.y >> r.t;
		canals.push_back(r);
	}
	const int INF = 2000000;
	vector <int> distance (n);
	int x;
	for (int i = 0; i < n; i++) {
		x = -1;
		for (int j = 0; j < m; j++)
			if (distance[canals[j].y] > distance[canals[j].x] + canals[j].t) {
				distance[canals[j].y] = max (-INF, distance[canals[j].x] + canals[j].t);
				x = canals[j].y;
			}
	}
 
	if (x == -1)
		cout << "not possible" << endl;
	else {
		cout << "possible" << endl;
	}
	return 0;
}