#include <bits/stdc++.h>
using namespace std;
long long rdtsc() {
  long long tmp;
  asm("rdtsc" : "=A"(tmp));
  return tmp;
}
inline int myrand() { return abs((rand() << 15) ^ rand()); }
inline int rnd(int x) { return myrand() % x; }
const int INF = (int)1e9 + 1;
const long double EPS = 1e-9;
const int maxn = 100 + 10, maxt = 3;
int d[maxn + 1][maxt][maxt];
const int maxNym = maxn;
int was[maxNym];
void countDyn(int N) {
  memset(was, 0, sizeof(was));
  int maxu = 0;
  for (int n = 0; n <= N; ++n) {
    for (int tl = 0; tl < 3; ++tl) {
      for (int tr = 0; tr < 3; ++tr) {
        int &cur = d[n][tl][tr];
        cur = 0;
        if (n == 0) {
          continue;
        }
        ++maxu;
        for (int i = 0; i < n; ++i) {
          for (int j = 0; j < 2; ++j) {
            if (i == 0 && (!j) == tl) {
              continue;
            }
            if (i == n - 1 && (!j) == tr) {
              continue;
            }
            int value = (d[i][tl][j] ^ d[n - 1 - i][j][tr]);
            assert(value < maxNym);
            was[value] = maxu;
          }
        }
        for (cur = 0; cur < maxNym && was[cur] == maxu; ++cur)
          ;
        assert(cur < maxNym);
      }
    }
  }
}
int used[maxn][2];
bool solve() {
  int n, m;
  if (scanf("%d%d", &n, &m) < 2) return 0;
  countDyn(n);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < 2; ++j) {
      used[i][j] = 0;
    }
  }
  for (int i = 0; i < m; ++i) {
    int x, y;
    assert(scanf("%d%d", &x, &y) == 2);
    --x, --y;
    used[x][y] = 1;
  }
  int res = 0;
  int last = -1, type = 2;
  for (int i = 0; i <= n; ++i) {
    int ctype = 2;
    for (int j = 0; i < n && j < 2; ++j) {
      if (used[i][j]) {
        ctype = j;
        break;
      }
    }
    if (i < n && ctype == 2) {
      continue;
    }
    res ^= d[i - last - 1][type][ctype];
    last = i;
    type = ctype;
  }
  printf(res ? "WIN\n" : "LOSE\n");
  return 1;
}
int main() {
  srand(rdtsc());
  while (1) {
    if (!solve()) break;
  }
  return 0;
}
