#include <bits/stdc++.h>
using namespace std;
const int N = 111;
int g[N][3][3];
int getg(int n, int m1, int m2) {
  if (n == 0) return 0;
  if (g[n][m1][m2] >= 0) return g[n][m1][m2];
  int &res = g[n][m1][m2];
  bool used[n][2];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < 2; j++) used[i][j] = 0;
  if (m1 == 1) used[0][0] = 1;
  if (m1 == 2) used[0][1] = 1;
  if (m2 == 1) used[n - 1][0] = 1;
  if (m2 == 2) used[n - 1][1] = 1;
  set<int> was;
  res = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < 2; j++) {
      if (used[i][j]) continue;
      int upn = i;
      int upm1 = 2 - j;
      int upm2 = m1;
      int lon = n - i - 1;
      int lom1 = 2 - j;
      int lom2 = m2;
      was.insert(getg(upn, upm1, upm2) ^ getg(lon, lom1, lom2));
    }
  while (was.count(res)) res++;
  return res;
}
bool field[N][2];
int main() {
  ios_base::sync_with_stdio(0);
  for (int i = 0; i < N; i++)
    for (int m1 = 0; m1 < 3; m1++)
      for (int m2 = 0; m2 < 3; m2++) g[i][m1][m2] = -1;
  int n;
  cin >> n;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < 2; j++) field[i][j] = 0;
  int q;
  cin >> q;
  for (int i = 0; i < q; i++) {
    int a, b;
    cin >> a >> b;
    --a;
    --b;
    field[a][b] = 1;
    for (int j = max(0, a - 1); j <= min(a + 1, n - 1); j++)
      field[j][1 - b] = 1;
  }
  int res = 0;
  for (int i = 0; i < n;) {
    if (field[i][0] == 1 && field[i][1] == 1) {
      i++;
      continue;
    }
    int upm = 0;
    if (field[i][0]) upm = 1;
    if (field[i][1]) upm = 2;
    int s = i;
    while (i < n && (field[i][0] == 0 || field[i][1] == 0)) i++;
    i--;
    int size = i - s + 1;
    int lom = 0;
    if (field[i][0]) lom = 1;
    if (field[i][1]) lom = 2;
    cerr << getg(size, upm, lom) << endl;
    res ^= getg(size, upm, lom);
    i++;
  }
  if (res)
    cout << "WIN";
  else
    cout << "LOSE";
  return 0;
}
