#include <bits/stdc++.h>
using namespace std;
const int MAXN = 150;
int dp[MAXN][2][2];
int dp2[MAXN], dp3[MAXN];
void fill() {
  for (int i = 1; i < MAXN; ++i)
    for (int PUT1 = 0; PUT1 <= 1; ++PUT1)
      for (int PUT2 = 0; PUT2 <= 1; ++PUT2) {
        set<int> fl;
        for (int place = 1; place <= i; ++place)
          for (int PUT3 = 0; PUT3 <= 1; ++PUT3)
            if (PUT3 != PUT1 and place == 1)
              continue;
            else if (PUT3 != PUT2 and place == i)
              continue;
            else
              fl.insert(dp[place - 1][PUT1][PUT3] ^ dp[i - place][PUT3][PUT2]);
        for (int ans = 0;; ++ans)
          if (fl.find(ans) == fl.end()) {
            dp[i][PUT1][PUT2] = ans;
            break;
          }
      }
  for (int i = 1; i < MAXN; ++i) {
    set<int> fl;
    for (int j = 1; j <= i; ++j)
      for (int PUT3 = 0; PUT3 <= 1; ++PUT3)
        if (j == i and PUT3 != 1)
          continue;
        else
          fl.insert(dp2[j - 1] ^ dp[i - j][PUT3][1]);
    for (int ans = 0;; ++ans)
      if (fl.find(ans) == fl.end()) {
        dp2[i] = ans;
        break;
      }
  }
  for (int i = 1; i < MAXN; ++i) {
    set<int> fl;
    for (int j = 1; j <= i; ++j) fl.insert(dp2[j - 1] ^ dp2[i - j]);
    for (int ans = 0;; ++ans)
      if (fl.find(ans) == fl.end()) {
        dp3[i] = ans;
        break;
      }
  }
}
int claim[MAXN];
int main() {
  claim[0] = -2;
  fill();
  int r, n;
  cin >> r >> n;
  while (n--) {
    int R, c;
    cin >> R >> c;
    claim[R] = c;
  }
  int ans = 0;
  int last = -1, cnt = 0;
  for (int i = 1; i <= r; ++i)
    if (claim[i] == 0)
      cnt++;
    else if (last == -1)
      ans ^= dp2[cnt], cnt = 0, last = claim[i];
    else
      ans ^= dp[cnt][last - 1][claim[i] - 1], cnt = 0, last = claim[i];
  if (cnt != r)
    ans ^= dp2[cnt];
  else
    ans = dp3[r];
  if (ans == 0)
    cout << "LOSE" << endl;
  else
    cout << "WIN" << endl;
  return 0;
}
