#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  while (b ^= a ^= b ^= a %= b)
    ;
  return a;
}
const long long mod = 1e9 + 7;
const int maxn = 3e3 + 9;
int n, m;
int p[maxn];
struct node {
  int s, e, l, r;
} a[maxn];
bool cmp(node a, node b) {
  if (a.l == b.l)
    return a.r < b.r;
  else
    return a.l < b.l;
}
int findd(int x) { return p[x] == x ? x : findd(p[x]); }
void join(int x, int y) {
  int jy = findd(y);
  int jx = findd(x);
  if (p[jx] != jy) {
    p[jy] = jx;
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> a[i].s >> a[i].e >> a[i].l >> a[i].r;
  }
  sort(a, a + m, cmp);
  int ans = 0;
  for (int i = 0; i < m; i++) {
    for (int i = 1; i <= n; i++) p[i] = i;
    for (int j = 0; j < m; j++) {
      if (a[i].r > a[j].r) continue;
      if (a[i].r < a[j].l) continue;
      join(a[j].s, a[j].e);
      if (findd(1) == findd(n)) {
        ans = max(ans, a[i].r - a[j].l + 1);
      }
    }
  }
  if (!ans)
    cout << "Nice work, Dima!" << endl;
  else
    cout << ans << endl;
  return 0;
}
