#include <bits/stdc++.h>
using namespace std;
template <typename T>
T mabs(const T &a) {
  return a < 0 ? -a : a;
}
int D[102][102][102][2][2] = {0};
int getSH(int a, int b, int c, int d, bool diag = true) {
  int addXor = 0;
  int bot, mid, top, botOr, topOr;
  if (a > b && c > d) {
    top = bot = mid = 0;
    botOr = topOr = 0;
  } else if (a > b) {
    bot = 0;
    mid = 0;
    top = d - c + 1;
    botOr = 1;
    topOr = 1;
  } else if (c > d) {
    bot = 0;
    mid = 0;
    top = b - a + 1;
    botOr = 0;
    topOr = 0;
  } else if (a > d || c > b) {
    if (diag && (a - 1 == d || c - 1 == b)) {
      return 1;
    } else {
      if (diag) {
        cerr << "fail a>d" << endl;
        throw 1;
      }
      return 0;
    }
  } else if (a >= c && b <= d) {
    bot = a - c;
    mid = b - a + 1;
    top = d - b;
    botOr = 1;
    topOr = 1;
  } else if (a >= c && b >= d) {
    bot = a - c;
    mid = d - a + 1;
    top = b - d;
    botOr = 1;
    topOr = 0;
  } else if (c >= a && d >= b) {
    bot = c - a;
    mid = b - c + 1;
    top = d - b;
    botOr = 0;
    topOr = 1;
  } else if (c >= a && d <= b) {
    bot = c - a;
    mid = d - c + 1;
    top = b - d;
    botOr = 0;
    topOr = 0;
  }
  if (!diag) {
    cerr << "Fig: " << bot << ' ' << mid << ' ' << top << ' ' << botOr << ' '
         << topOr << endl;
  }
  return addXor ^ D[bot][mid][top][botOr][topOr];
}
void run() {
  int n;
  cin >> n;
  for (int sum = (1), esum = (n + 1); sum < esum; sum++)
    for (int bot = (0), ebot = (sum + 1); bot < ebot; bot++)
      for (int mid = (0), emid = (sum - bot + 1); mid < emid; mid++)
        for (int botOr = (0), ebotOr = (2); botOr < ebotOr; botOr++)
          for (int topOr = (0), etopOr = (2); topOr < etopOr; topOr++)
            if (mid != 0 || botOr != topOr ||
                (mid == 0 && botOr == topOr && bot == 0)) {
              int top = sum - bot - mid;
              if (bot == 0 && mid == 4 && top == 0 && botOr == 1 &&
                  topOr == 1) {
                int asd = 1;
              }
              int mex[203] = {0};
              int a = botOr == 0 ? 0 : bot;
              int b = topOr == 0 ? sum - 1 : bot + mid - 1;
              int c = botOr == 1 ? 0 : bot;
              int d = topOr == 1 ? sum - 1 : bot + mid - 1;
              for (int i = (a), ei = (b + 1); i < ei; i++) {
                int val = getSH(a, i - 1, c, i - 2);
                val ^= getSH(i + 1, b, i + 2, d);
                if (val < 203) mex[val] = 1;
              }
              for (int i = (c), ei = (d + 1); i < ei; i++) {
                int val = getSH(a, i - 2, c, i - 1);
                val ^= getSH(i + 2, b, i + 1, d);
                if (val < 203) mex[val] = 1;
              }
              for (int i = (0), ei = (203); i < ei; i++)
                if (!mex[i]) {
                  D[bot][mid][top][botOr][topOr] = i;
                  break;
                }
            }
  bool used[105][2] = {0};
  int m;
  cin >> m;
  for (int i = (0), ei = (m); i < ei; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    --y;
    used[x][y] = used[x - 1][1 - y] = 1;
    used[x][1 - y] = used[x + 1][1 - y] = 1;
  }
  vector<pair<int, int> > otr[2];
  for (int t = (0), et = (2); t < et; t++) {
    int last = -1;
    used[n + 1][t] = 1;
    for (int i = (1), ei = (n + 2); i < ei; i++)
      if (!used[i][t]) {
        if (last == -1) last = i;
      } else {
        if (last != -1) otr[t].push_back(pair<int, int>(last, i - 1));
        last = -1;
      }
    for (int i = (0), ei = (otr[t].size()); i < ei; i++)
      cerr << otr[t][i].first << ' ' << otr[t][i].second << endl;
  }
  int res = 0;
  bool was[2][101] = {0};
  for (int i = (0), ei = (otr[0].size()); i < ei; i++)
    for (int j = (0), ej = (otr[1].size()); j < ej; j++) {
      if (max(otr[0][i].first, otr[1][j].first) <=
          min(otr[0][i].second, otr[1][j].second)) {
        was[0][i] = was[1][j] = 1;
        int val = getSH(otr[0][i].first, otr[0][i].second, otr[1][j].first,
                        otr[1][j].second, false);
        res ^= val;
      }
      if (otr[0][i].first == otr[0][i].second &&
          otr[1][j].first == otr[1][j].second &&
          abs(otr[0][i].first - otr[1][j].first) == 1) {
        was[0][i] = was[1][j] = 1;
        res ^= 1;
      }
    }
  for (int t = (0), et = (2); t < et; t++)
    for (int i = (0), ei = (otr[t].size()); i < ei; i++)
      if (!was[t][i]) {
        res ^= D[0][0][otr[t][i].second - otr[t][i].first + 1][t][t];
        cerr << "Fig: " << otr[t][i].first << ' ' << otr[t][i].second << endl;
      }
  puts(res ? "WIN" : "LOSE");
}
int main() {
  run();
  return 0;
}
