#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define per(i,a,b) for(int i=(b)-1;i>=(a);--i)
#define fi first
#define se second
using namespace std;
const int N=1e5+9;
const int Inf=2e9;
set<pair<int,int>> S,S2;
struct node{
	int x,y;
	node(int x=0,int y=0):x(x),y(y){}
}p[N],p2[N];
int main(){
	int n,m;
	scanf("%d%d",&n,&m);
	rep(i,0,n)scanf("%d%d",&p[i].x,&p[i].y),p2[i]=p[i];
	sort(p,p+n,[](node a,node b){return (a.x!=b.x)?a.x<b.x:a.y<b.y;});
	sort(p2,p2+n,[](node a,node b){return (a.y!=b.y)?a.y<b.y:a.x<b.x;});
	p[n].x=Inf;
	p2[n].y=Inf;
	int pos=0,pos2=0;
	rep(i,0,n)S.insert({p[i].x,p[i].y});
	int nx=0,ny=0;
	S.insert({0,0});
	while(pos<n||pos2<n){
		int d=min(p[pos].x-nx,p2[pos2].y-ny);
		nx+=d,ny+=d;
		while(nx==p[pos].x&&ny>p[pos].y||ny==p2[pos2].y&&nx>p2[pos2].x){
			if(nx==p[pos].x&&ny>p[pos].y){
				++nx;
				while(p[pos].x<nx)++pos;
			}
			else{
				++ny;
				while(p2[pos2].y<ny)++pos2;
			}
		}
		S.insert({nx,ny});
		while(pos<n&&p[pos].x<=nx)++pos;
		while(pos2<n&&p2[pos2].y<=ny)++pos2; 
	}
	pair<int,int> last={-1,-1};
	for(auto u:S){
	//	cout<<u.fi<<' '<<u.se<<"check\n";
		if(u.first==last.first)continue;
		last=u;
		S2.insert(last);
	}
	while(m--){
		int x,y;
		scanf("%d%d",&x,&y);
		if(S.find({x,y})!=S.end()){
			puts("LOSE");
		}
		else{
			auto it=S2.lower_bound({x,y});
			if(it!=S2.end()&&(*it).first==x){
				puts("WIN");
			}
			else{
				--it;
				int dx=x-(*it).first,dy=y-(*it).second;
				if(dx==dy)puts("LOSE");
				else puts("WIN");
			}
		}
		
	}
}