#include <bits/stdc++.h>
using namespace std;
void precompute(void) {}
int dp[128][128][4][4];
int isFree[128][2];
int getGrundy(int start, int end, int startBit, int endBit) {
  if (start > end) return 0;
  if (dp[start][end][startBit][endBit] == -1) {
    int g1, g2;
    set<int> S;
    if (isFree[start][0] && startBit / 2 == 1) {
      S.insert(getGrundy(start + 1, end, 2, endBit));
    }
    if (isFree[start][1] && startBit % 2 == 1) {
      S.insert(getGrundy(start + 1, end, 1, endBit));
    }
    if (isFree[end][0] && endBit / 2 == 1) {
      S.insert(getGrundy(start, end - 1, startBit, 2));
    }
    if (isFree[end][1] && endBit % 2 == 1) {
      S.insert(getGrundy(start, end - 1, startBit, 1));
    }
    for (int i = start + 1; i <= end - 1; i++) {
      if (isFree[i][0]) {
        g1 = getGrundy(start, i - 1, startBit, 2);
        g2 = getGrundy(i + 1, end, 2, endBit);
        S.insert(g1 ^ g2);
      }
      if (isFree[i][1]) {
        g1 = getGrundy(start, i - 1, startBit, 1);
        g2 = getGrundy(i + 1, end, 1, endBit);
        S.insert(g1 ^ g2);
      }
    }
    int ans = 0;
    while (S.find(ans) != S.end()) ans++;
    dp[start][end][startBit][endBit] = ans;
  }
  return dp[start][end][startBit][endBit];
}
int main() {
  int r, n, x, y;
  string ans;
  precompute();
  while (scanf("%d%d", &r, &n) != EOF) {
    for (int i = 1; i <= r; i++) {
      isFree[i][0] = isFree[i][1] = 1;
    }
    for (int i = 0; i < n; i++) {
      scanf("%d%d", &x, &y);
      y--;
      isFree[x][y] = 0;
      isFree[x - 1][1 - y] = 0;
      isFree[x][1 - y] = 0;
      isFree[x + 1][1 - y] = 0;
    }
    memset(dp, -1, sizeof(dp));
    if (getGrundy(1, r, 3, 3) == 0) {
      ans = "LOSE";
    } else {
      ans = "WIN";
    }
    cout << ans << endl;
  }
  return 0;
}
