#include <bits/stdc++.h>
const int NS = 110;
int r, k;
int g[NS];
int sg[NS][4][4];
int tra[NS];
int num[NS], top;
void init() {
  tra[10] = tra[5] = 5;
  tra[9] = tra[6] = 6;
  tra[1] = tra[2] = 1;
}
int get_sg(int L, int s, int e) {
  if (L <= 0) return 0;
  if (sg[L][s][e] != -1) return sg[L][s][e];
  if (L == 1) {
    return sg[L][s][e] = (s & e) > 0;
  }
  bool vis[NS] = {0};
  for (int i = 0; i < L; i++) {
    for (int j = 1; j <= 2; j++) {
      if (i == 0) {
        if (s & j) {
          vis[get_sg(L - i - 1, j, e)] = true;
        }
      } else if (i == L - 1) {
        if (e & j) {
          vis[get_sg(i, s, j)] = true;
        }
      } else {
        vis[get_sg(i, s, j) ^ get_sg(L - i - 1, j, e)] = true;
      }
    }
  }
  for (int i = 0; i < NS; i++) {
    if (!vis[i]) {
      return sg[L][s][e] = i;
    }
  }
}
int main() {
  memset(sg, -1, sizeof(sg));
  while (~scanf("%d%d", &r, &k)) {
    memset(g, 0, sizeof(g));
    for (int i = 0; i <= r + 2; i++) g[i] = 3;
    for (int i = 0; i < k; i++) {
      int x, y;
      scanf("%d %d", &x, &y);
      g[x] = y;
    }
    int res = 0;
    int cur = 0, len = 0;
    for (int j, i = 1; i <= r; i++) {
      if (g[i] < 3) continue;
      j = i;
      while (j <= r && g[j] == 3) j++;
      res ^= get_sg(j - i, g[i - 1], g[j]);
      i = j;
    }
    puts(res > 0 ? "WIN" : "LOSE");
  }
  return 0;
}
