#include <bits/stdc++.h>
using namespace std;
template <class T1>
void debug(T1 e) {
  cout << e << endl;
}
template <class T1, class T2>
void debug(T1 e1, T2 e2) {
  cout << e1 << "\t" << e2 << endl;
}
template <class T1, class T2, class T3>
void debug(T1 e1, T2 e2, T3 e3) {
  cout << e1 << "\t" << e2 << "\t" << e3 << endl;
}
template <class T1, class T2, class T3, class T4>
void debug(T1 e1, T2 e2, T3 e3, T4 e4) {
  cout << e1 << "\t" << e2 << "\t" << e3 << "\t" << e4 << endl;
}
template <class T1, class T2, class T3, class T4, class T5>
void debug(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {
  cout << e1 << "\t" << e2 << "\t" << e3 << "\t" << e4 << "\t" << e5 << endl;
}
template <class T1, class T2, class T3, class T4, class T5, class T6>
void debug(T1 e1, T2 e2, T3 e3, T4 e4, T5 e5, T6 e6) {
  cout << e1 << "\t" << e2 << "\t" << e3 << "\t" << e4 << "\t" << e5 << "\t"
       << e6 << endl;
}
template <class T>
void debug(vector<vector<T> > e, int row, int col) {
  int i, j;
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) cout << e[i][j] << " ";
    cout << endl;
  }
  cout << endl;
}
template <class T>
void debug(vector<basic_string<T> > e, int row, int col) {
  int i, j;
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) cout << e[i][j];
    cout << endl;
  }
  cout << endl;
}
template <class T>
void debug(T e[110][110], int row, int col) {
  int i, j;
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) cout << e[i][j] << " ";
    cout << endl;
  }
}
template <class T>
string toString(T n) {
  ostringstream oss;
  oss << n;
  oss.flush();
  return oss.str();
}
int toInt(string s) {
  int r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
bool isVowel(char ch) {
  ch = tolower(ch);
  if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
    return true;
  return false;
}
bool isUpper(char c) { return c >= 'A' && c <= 'Z'; }
bool isLower(char c) { return c >= 'a' && c <= 'z'; }
int dp[104][4][4];
int col[104][4];
int dprec(int n, int x, int y) {
  int &ret = dp[n][x][y];
  if (ret != -1) return ret;
  bool grund[104];
  memset(grund, 0, sizeof(grund));
  if (n == 0) {
    if (x == y) return ret = 0;
    return ret = 1;
  }
  if (x || y) grund[dprec(n - 1, x, y)] = true;
  if (n == 1) {
    grund[dprec(n - 1, x == 1, y == 1)] = true;
    grund[dprec(n - 1, (x == 2) * 2, (y == 2) * 2)] = true;
  } else {
    grund[dprec(0, x == 1, 0) ^ dprec(n - 2, 1, y)] = true;
    grund[dprec(0, (x == 2) * 2, 0) ^ dprec(n - 2, 2, y)] = true;
    grund[dprec(0, 0, y == 1) ^ dprec(n - 2, x, 1)] = true;
    grund[dprec(0, 0, (y == 2) * 2) ^ dprec(n - 2, x, 2)] = true;
  }
  int i;
  for (i = 2; i <= n - 1; i++) {
    grund[dprec(i - 2, x, 1) ^ dprec(n - i - 1, 1, y)] = true;
    grund[dprec(i - 2, x, 2) ^ dprec(n - i - 1, 2, y)] = true;
  }
  for (i = 0; grund[i]; i++)
    ;
  return ret = i;
}
int main() {
  int r, n;
  memset(col, 0, sizeof(col));
  memset(dp, -1, sizeof(dp));
  while (cin >> r >> n) {
    int a, b, i;
    for (i = 1; i <= n; i++) {
      cin >> a >> b;
      col[a][b] = 1;
      col[a - 1][3 - b] = 1;
      col[a][3 - b] = 1;
      col[a + 1][3 - b] = 1;
    }
    int ans = 0;
    int st = 0, cnt = 0;
    for (i = 1; i <= r; i++) {
      if (!st) {
        if (col[i][1] && col[i][2]) continue;
        cnt = 0;
        if (!col[i][1] && !col[i][2]) {
          st = 1;
          cnt++;
        } else if (!col[i][1])
          st = 2;
        else if (!col[i][2])
          st = 3;
        continue;
      }
      if (!col[i][1] && !col[i][2]) {
        cnt++;
        continue;
      } else if (!col[i][1])
        ans ^= dprec(cnt, st - 1, 1);
      else if (!col[i][2])
        ans ^= dprec(cnt, st - 1, 2);
      else
        ans ^= dprec(cnt, st - 1, 0);
      st = 0;
      cnt = 0;
    }
    if (cnt) ans ^= dprec(cnt, st - 1, 0);
    if (ans)
      cout << "WIN" << endl;
    else
      cout << "LOSE" << endl;
  }
  return 0;
}
