#include <bits/stdc++.h>
using namespace std;
template <class T>
void print(vector<T> v) {
  cerr << "[";
  if (v.size()) cerr << v[0];
  for (int i = (1); i < (v.size()); ++i) cerr << ", " << v[i];
  cerr << "]\n";
}
template <class T>
string i2s(T x) {
  ostringstream o;
  o << x;
  return o.str();
}
vector<string> splt(string s, char c = ' ') {
  vector<string> all;
  int p = 0, np;
  while (np = s.find(c, p), np >= 0) {
    if (np != p) all.push_back(s.substr(p, np - p));
    p = np + 1;
  }
  if (p < s.size()) all.push_back(s.substr(p));
  return all;
}
int x[100][2];
int gn[110][4];
int go(int no, int t) {
  int &rv = gn[no][t];
  if (rv != -1) return rv;
  if (no == 0) return rv = 0;
  int us[500];
  memset(us, 0, sizeof(us));
  if (t == 0) {
    for (int i = (0); i < (no); ++i) us[go(i, 1) ^ go(no - 1 - i, 1)] = 1;
  } else if (t == 1) {
    for (int i = (0); i < (no); ++i) us[go(i, 1) ^ go(no - 1 - i, 2)] = 1;
    for (int i = (0); i < (no - 1); ++i) us[go(i, 1) ^ go(no - 1 - i, 3)] = 1;
  } else if (t == 2) {
    for (int i = (0); i < (no); ++i) us[go(i, 2) ^ go(no - 1 - i, 2)] = 1;
    for (int i = (1); i < (no - 1); ++i) us[go(i, 3) ^ go(no - 1 - i, 3)] = 1;
  } else if (t == 3) {
    for (int i = (0); i < (no - 1); ++i) us[go(i, 2) ^ go(no - 1 - i, 3)] = 1;
  }
  rv = 0;
  while (us[rv]) rv++;
  return rv;
}
int main() {
  int r, n;
  cin >> r >> n;
  memset(gn, -1, sizeof(gn));
  for (int i = (0); i < (n); ++i) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    x[a][b] = 1;
  }
  int t = -1;
  int no = 0;
  int rv = 0;
  for (int i = (0); i < (r + 1); ++i) {
    if (i == r || x[i][0] || x[i][1]) {
      int nt = i == r ? -1 : x[i][0] ? 0 : 1;
      int z = -1;
      if (t == -1 && nt == -1) {
        z = 0;
      } else if (t == -1 || nt == -1) {
        z = 1;
      } else if (t == nt) {
        z = 2;
      } else if (t != nt) {
        z = 3;
      }
      rv ^= go(no, z);
      t = nt;
      no = 0;
    } else {
      no++;
    }
  }
  cout << (rv == 0 ? "LOSE" : "WIN") << endl;
}
