#include <bits/stdc++.h>
using namespace std;
const int maxN = 300 + 5;
const int INF = (1 << 29);
vector<vector<int> > tmp, res[10], g, mat;
int main() {
  ios_base::sync_with_stdio(false);
  int n, m;
  cin >> n >> m;
  g.resize(n);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) g[i].push_back(INF);
  for (int i = 0; i < m; i++) {
    int u, v, c1, c2;
    cin >> u >> v >> c1 >> c2;
    u--;
    v--;
    g[u][v] = -c1;
    g[v][u] = -c2;
  }
  res[0] = g;
  for (int l = 1; l < 10; l++) {
    res[l] = res[l - 1];
    for (int x = 0; x < n; x++)
      for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
          res[l][i][j] = min(res[l][i][j], res[l - 1][i][x] + res[l - 1][x][j]);
  }
  mat = g;
  int ans = 1;
  for (int l = 9; l >= 0; l--) {
    tmp = mat;
    for (int x = 0; x < n; x++)
      for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
          tmp[i][j] = min(tmp[i][j], mat[i][x] + res[l][x][j]);
    bool flag = false;
    for (int i = 0; i < n; i++)
      if (tmp[i][i] < 0) {
        flag = true;
        break;
      }
    if (!flag) {
      ans += (1 << l);
      mat = tmp;
    }
  }
  if (ans == (1 << 10))
    cout << 0 << endl;
  else
    cout << ans + 1 << endl;
  return 0;
}
