#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;
const int N = 200005;
int n,m,cnt,now;
int t[N<<2],del[N],a[N];
int ans[N];
inline int read() {
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9') {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9') {
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*f;
}

struct stone{
	int a,b;
	int op;
}s[N];

int lowbit(int x) {return x & (-x);}
void change(int x,int d) {
	for(;x <= cnt;x += lowbit(x)) t[x] += d;
	return;
}

int query(int x) {
	int ans = 0;
	for(;x;x -= lowbit(x)) ans += t[x];
	return ans;
}

bool cmp(stone u,stone v) {
	return (u.a < v.a)||(u.a == v.a && u.b < v.b)||(u.a == v.a && u.b == v.b && u.op < v.op);
}

int main () {
	//op = 0必败op > 0询问 
	n = read();m = read();
	for(int i = 1;i <= n;i++) {
		s[i].a = read();
		s[i].b = read();
		s[i].op = 0;
		a[i] = s[i].b;
	}
	for(int i = 1;i <= m;i++) {
		s[n+i].a = read();
		s[n+i].b = read();
		s[n+i].op = i;
	}
	int tot = n + m;
	sort(s+1,s+tot+1,cmp);
	sort(a+1,a+n+1);
	cnt = unique(a+1,a+n+1)-a-1;
	int du = 0;
	//du:已经删掉的行数 
	//now：当前已删掉的行中最大的 
	for(int i = 1;i <= tot;i++) {
		if(!s[i].op) {
			int yy = lower_bound(a+1,a+cnt+1,s[i].b)-a;
			if(s[i].a < s[i].b + du - query(yy)) {
				if(!del[yy]) {
					del[yy] = 1;
					change(yy,1);
				}
			}
			else if(s[i].a > s[i].b + du - query(yy) && now != s[i].a) {
				du++;
				now = s[i].a; 
			}
		}
		else {
			if(!s[i-1].op && s[i-1].a == s[i].a && s[i-1].b == s[i].b) ans[s[i].op] = 1;
			else if(s[i].a != now) {
				int yy = upper_bound(a+1,a+cnt+1,s[i].b)-a-1;
				if(s[i].b != a[yy] || !del[yy]) {
					if(s[i].a == s[i].b + du - query(yy)) ans[s[i].op] = 1;
				}  
			}
		}
	} 
	for(int i = 1;i <= m;i++) {
		if(ans[i]) puts("LOSE");
		else puts("WIN");
	}
	return 0;
} 