#include <bits/stdc++.h>

using pii = std::pair<int, int>;
#define mkp(a, b) std::make_pair(a, b)
#define all(vec) vec.begin(), vec.end()

const int N = 2e5 + 10;

inline int read()
{
    int x = 0, f = 0; char ch = getchar();
    while (!isdigit(ch)) f |= ch == '-', ch = getchar();
    while ( isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
    return f ? -x : x;
}

std::vector<pii> vec[N];

int main()
{
    int n = read(), q = read();
    std::map<pii, int> Map;
    std::map<int, int> idx, a, b;
    for (int i = 1; i <= n; ++i)
    {
        int x = read(), y = read();
        Map[mkp(x, y)] = 1;
        a.find(x) != a.end() ? (a[x] = std::min(a[x], y)) : (a[x] = y);
        b.find(y) != b.end() ? (b[y] = std::min(b[y], x)) : (b[y] = x);
    }
    for (int x = 0, y = 0, tot = 0; true; )
    {
        if (a.find(x) != a.end() && a[x] <= y) { ++x; continue; }
        if (b.find(y) != b.end() && b[y] <= x) { ++y; continue; }
        std::map<int, int>::iterator itx = a.upper_bound(x);
        std::map<int, int>::iterator ity = b.upper_bound(y);
        int d = 1e9;
        if (itx != a.end()) d = std::min(d, itx -> first - x);
        if (ity != b.end()) d = std::min(d, ity -> first - y);
        if (idx.find(y - x) == idx.end()) idx[y - x] = ++tot;
        vec[idx[y - x]].emplace_back(x + d, x);
        x += d, y += d;
        if (d == 1e9) break;
    }
    for (int T = 1; T <= q; ++T)
    {
        int x = read(), y = read();
        if (Map.find(mkp(x, y)) != Map.end()) { puts("LOSE"); continue; }
        if (idx.find(y - x) == idx.end()) { puts("WIN"); continue; }
        std::vector<pii>::iterator it = std::upper_bound(all(vec[idx[y - x]]), pii(x, 1.1e9));
        if (it != vec[idx[y - x]].end() && it -> second <= x) { puts("LOSE"); continue; }
        puts("WIN");
    }
    return 0;
}