#include <bits/stdc++.h>
using namespace std;
const int MAXR = 100 + 10;
const int MAXN = 100 + 10;
int r, c = 2, n;
int Gnum[MAXR][4];
int MexMark[MAXN * 4];
bool Grid[MAXR][2];
void initGrundy() {
  int cnt = 0;
  Gnum[0][0] = 0;
  Gnum[0][1] = 1;
  Gnum[0][2] = 0;
  Gnum[0][3] = 1;
  for (int i = 1; i <= r; i++) {
    for (int FL = 0; FL < 4; FL++) {
      cnt++;
      if (FL == 1) MexMark[Gnum[i - 1][1]] = cnt;
      if (FL == 2) MexMark[Gnum[i - 1][2]] = cnt;
      if (FL == 3) MexMark[Gnum[i - 1][3]] = cnt;
      for (int j = 0; j < i; j++) {
        switch (FL) {
          case 0: {
            int a, b;
            if (j - 1 < 0)
              a = 0;
            else
              a = Gnum[j - 1][1];
            if (i - j - 2 < 0)
              b = 0;
            else
              b = Gnum[i - j - 2][1];
            MexMark[a ^ b] = cnt;
            break;
          }
          case 1: {
            int a, b;
            if (j - 1 < 0)
              a = Gnum[0][1];
            else
              a = Gnum[j - 1][2];
            if (i - j - 2 < 0)
              b = 0;
            else
              b = Gnum[i - j - 2][1];
            MexMark[a ^ b] = cnt;
            break;
          }
          case 2: {
            int a, b;
            if (j - 1 < 0)
              a = Gnum[0][1];
            else
              a = Gnum[j - 1][2];
            if (i - j - 2 < 0)
              b = Gnum[0][1];
            else
              b = Gnum[i - j - 2][2];
            MexMark[a ^ b] = cnt;
            break;
          }
          case 3: {
            int a, b;
            if (j - 1 < 0)
              a = Gnum[0][1];
            else
              a = Gnum[j - 1][2];
            if (i - j - 2 < 0)
              b = 0;
            else
              b = Gnum[i - j - 2][3];
            MexMark[a ^ b] = cnt;
          }
        }
        switch (FL) {
          case 0: {
            int a, b;
            if (j - 1 < 0)
              a = 0;
            else
              a = Gnum[j - 1][1];
            if (i - j - 2 < 0)
              b = 0;
            else
              b = Gnum[i - j - 2][1];
            MexMark[a ^ b] = cnt;
            break;
          }
          case 1: {
            int a, b;
            if (j - 1 < 0)
              a = 0;
            else
              a = Gnum[j - 1][3];
            if (i - j - 2 < 0)
              b = 0;
            else
              b = Gnum[i - j - 2][1];
            MexMark[a ^ b] = cnt;
            break;
          }
          case 2: {
            int a, b;
            if (j - 1 < 0)
              a = 0;
            else
              a = Gnum[j - 1][3];
            if (i - j - 2 < 0)
              b = 0;
            else
              b = Gnum[i - j - 2][3];
            MexMark[a ^ b] = cnt;
            break;
          }
          case 3: {
            int a, b;
            if (j - 1 < 0)
              a = 0;
            else
              a = Gnum[j - 1][3];
            if (i - j - 2 < 0)
              b = Gnum[0][1];
            else
              b = Gnum[i - j - 2][2];
            MexMark[a ^ b] = cnt;
            break;
          }
        }
      }
      while (MexMark[Gnum[i][FL]] == cnt) Gnum[i][FL]++;
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> r >> n;
  for (int i = 0; i < r; i++) Grid[i][0] = Grid[i][1] = true;
  for (int i = 0; i < n; i++) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    Grid[a][b] = false;
    Grid[max(a - 1, 0)][1 - b] = false;
    Grid[a][1 - b] = false;
    Grid[min(a + 1, r - 1)][1 - b] = false;
  }
  Grid[r][0] = Grid[r][1] = false;
  initGrundy();
  int ans = 0, curLen = 0, topFlat = 0, botFlat = 0;
  bool Start = false;
  for (int i = 0; i <= r; i++) {
    if (!Grid[i][0] && !Grid[i][1]) continue;
    if (Grid[i][0] && !Grid[i][1]) {
      if (!Start) {
        if (!Grid[i + 1][0]) {
          if (Grid[i + 1][1]) {
            ans ^= Gnum[0][3];
            i++;
            continue;
          }
          ans ^= Gnum[0][1];
          continue;
        }
        Start = true;
        topFlat = 1;
      }
      if (!Grid[i + 1][0]) {
        if (topFlat == 0) ans ^= Gnum[curLen][1];
        if (topFlat == 1) ans ^= Gnum[curLen][2];
        if (topFlat == 2) ans ^= Gnum[curLen][3];
        Start = false;
        curLen = 0;
      }
    }
    if (!Grid[i][0] && Grid[i][1]) {
      if (!Start) {
        if (!Grid[i + 1][1]) {
          if (Grid[i + 1][0]) {
            ans ^= Gnum[0][3];
            i++;
            continue;
          }
          ans ^= Gnum[0][1];
          continue;
        }
        Start = true;
        topFlat = 2;
      }
      if (!Grid[i + 1][1]) {
        if (topFlat == 0) ans ^= Gnum[curLen][1];
        if (topFlat == 1) ans ^= Gnum[curLen][3];
        if (topFlat == 2) ans ^= Gnum[curLen][2];
        Start = false;
        curLen = 0;
      }
    }
    if (Grid[i][0] && Grid[i][1]) {
      curLen++;
      if (!Start) {
        if (!Grid[i + 1][0] && !Grid[i + 1][1]) {
          ans ^= Gnum[1][0];
          continue;
        }
        Start = true;
        topFlat = 0;
      }
      if (!Grid[i + 1][0] && !Grid[i + 1][1]) {
        if (topFlat == 0) ans ^= Gnum[curLen][0];
        if (topFlat == 1 || topFlat == 2) ans ^= Gnum[curLen][1];
        Start = false;
        curLen = 0;
      }
    }
  }
  if (ans)
    cout << "WIN" << endl;
  else
    cout << "LOSE" << endl;
  return 0;
}
