#include <bits/stdc++.h>
using namespace std;
const long long int INF = (long long int)1e9 + 10;
const long long int INFLL = (long long int)1e18 + 10;
const long double EPS = 1e-8;
const long long int MOD = 1e9 + 7;
template <class T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <class T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
template <class T>
inline T sq(T a) {
  return a * a;
}
int n, m;
bool f[128][2];
int memo[128][128][3][3];
bool isin(int a, int b) { return 0 <= a and a < n and 0 <= b and b < 2; }
vector<pair<int, int> > cg;
void draw(int a, int b) {
  if (isin(a, b) and !f[a][b]) {
    cg.emplace_back(a, b);
    f[a][b] = true;
  }
}
void put(int a, int b) {
  cg.clear();
  draw(a, b);
  draw(a - 1, 1 - b);
  draw(a, 1 - b);
  draw(a + 1, 1 - b);
}
int mex(set<int> &x) {
  for (long long int i = (0); i < (long long int)(INF); i++)
    if (x.find(i) == x.end()) return i;
}
int grandy(int t, int b, int tf, int bf) {
  int &res = memo[t][b][tf][bf];
  if (res != -1) return res;
  set<int> gs;
  for (long long int i = (t); i < (long long int)(b); i++)
    for (long long int j = (0); j < (long long int)(2); j++)
      if (!f[i][j]) {
        put(i, j);
        vector<pair<int, int> > ccg = cg;
        int x = grandy(t, i, tf, j) ^ grandy(i + 1, b, j, bf);
        gs.insert(x);
        for (auto &w : ccg) f[w.first][w.second] = false;
      }
  return res = mex(gs);
}
int main() {
  scanf("%d %d", &n, &m);
  for (long long int i = (0); i < (long long int)(m); i++) {
    int a, b;
    scanf("%d %d", &a, &b);
    a--;
    b--;
    put(a, b);
  }
  for (long long int i = (0); i < (long long int)(128); i++)
    for (long long int j = (0); j < (long long int)(128); j++)
      for (long long int k = (0); k < (long long int)(3); k++)
        for (long long int l = (0); l < (long long int)(3); l++)
          memo[i][j][k][l] = -1;
  if (grandy(0, n, 2, 2) == 0)
    puts("LOSE");
  else
    puts("WIN");
  return 0;
}
