#include <algorithm>
#include <iostream>
#include <set>
#include <vector>
using namespace std;

const int N_MAX = 1e5+1;
struct pt {long long x, y;};
bool operator != (const pt & p1, const pt & p2) {return p1.x != p2.x || p1.y != p2.y;}

int n, m, sorted_x[N_MAX], sorted_y[N_MAX], cnt[N_MAX];
pt p[N_MAX];
vector<pair<pt,pt>> v;
set<pair<long long,long long>> st;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin >> n >> m;
    for (int i = 0; i < n; i++) cin >> p[i].x >> p[i].y;
    p[n].x = 1e9+1, p[n].y = 3e9;
    n++;
    for (int i = 0; i < n; i++) sorted_x[i] = sorted_y[i] = i;
    sort(sorted_x, sorted_x+n, [](const int & i, const int & j) -> bool {return p[i].x < p[j].x;});
    sort(sorted_y, sorted_y+n, [](const int & i, const int & j) -> bool {return p[i].y < p[j].y;});

    pt q; q.x = q.y = 0;
    v.push_back({q,q});
    int nxt_x = 0, nxt_y = 0;
    while(nxt_x < n || nxt_y < n) {
        bool up = false, right = false, diag = false;
        long long d = ((nxt_x < n && (nxt_y == n || p[sorted_x[nxt_x]].x-q.x < p[sorted_y[nxt_y]].y-q.y)) ?
                  p[sorted_x[nxt_x]].x-q.x :
                  p[sorted_y[nxt_y]].y-q.y);
        q.x += d, q.y += d;
        while(nxt_x < n && p[sorted_x[nxt_x]].x == q.x) {
            int i = sorted_x[nxt_x];
            cnt[i]++;
            if(cnt[i] == 2) {
                if(p[i].y == q.y) diag = true;
                else right = true;
            }
            nxt_x++;
        }
        while(nxt_y < n && p[sorted_y[nxt_y]].y == q.y) {
            int i = sorted_y[nxt_y];
            cnt[i]++;
            if(cnt[i] == 2) {
                if(p[i].x == q.x) diag = true;
                else up = true;
            }
            nxt_y++;
        }
        if(diag) continue;
        if(up || right) {
            if(v.back().first != q) {
                v.back().second.x = q.x-1, v.back().second.y = q.y-1;
                v.push_back({q,q});
            }
            if(right) q.x++;
            if(up) q.y++;
            v.back().first = q;
        }
    }
    v.pop_back();
    for (int i = 0; i < n; i++) st.insert({p[i].x, p[i].y});
    for (int i = 0; i < m; i++) {
        long long x, y; cin >> x >> y;
        if(st.find({x,y}) != st.end()) {
            cout << "LOSE\n";
            continue;
        }
        int a = 0, b = v.size()-1;
        while(a < b) {
            int k = (a+b+1)/2;
            if(x < v[k].first.x) b = k-1;
            else a = k;
        }
        cout << ((v[a].first.x <= x && x <= v[a].second.x && v[a].first.x-v[a].first.y == x-y) ?
                 "LOSE" : "WIN") << "\n";
    }
    return 0;
}
