#include<bits/stdc++.h>
#define N 200010
using namespace std;
map<int,map<int,int> >mp;
int n,m,ans[N];
struct edge{
	int x,y;
}up[N],D[N];
struct hh{
	int x,y,id;
}q[N];
bool operator<(hh a,hh b){
	if(a.y!=b.y)return a.y<b.y;
	return a.x<b.x;
}
bool cmp1(edge a,edge b){
	if(a.y!=b.y)return a.y<b.y;
	return a.x<b.x;
}
bool cmp2(edge a,edge b){
	if(a.x!=b.x)return a.x<b.x;
	return a.y<b.y;
} 
int disUP(int id,int x){
	if(id>n)return 1e9+1;
	return up[id].x-x;
}
int disD(int id,int y){
	if(id>n)return 1e9+1;
	return D[id].y-y;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		D[i]=up[i]=(edge){x,y};
		mp[x][y]=1;
	}
	sort(D+1,D+1+n,cmp1);
	sort(up+1,up+1+n,cmp2);
//	cout<<endl;
//	for(int i=1;i<=n;i++)cout<<D[i].x<<' '<<D[i].y<<endl;
//	cout<<endl;
//	for(int i=1;i<=n;i++)cout<<up[i].x<<' '<<up[i].y<<endl;
//	cout<<endl;
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		if(mp[x][y])x=y=0;
		q[i]=(hh){x,y,i};
	}
	sort(q+1,q+1+m);
	int nowx=0,nowy=0,nowq=1;
	int nowUP=1,nowD=1;
	while(nowUP<=n||nowD<=n){
		int flagUP=0,flagD=0,flag1=0,flag2=0;
		while(nowUP<=n&&up[nowUP].x<nowx)nowUP++;
		while(nowD<=n&&D[nowD].y<nowy)nowD++;
//		cout<<"fuckfuck "<<nowD<<' '<<D[nowD].y<<' '<<nowy<<endl;
		while(nowUP<=n||nowD<=n){
			int dis1=disUP(nowUP,nowx),dis2=disD(nowD,nowy);
			if(dis1<dis2){
				if(nowy+dis1>=up[nowUP].y)break;
				nowUP++;
			}
			else if(dis1>dis2){
				if(nowx+dis2>=D[nowD].x)break;
				nowD++;
			}
			else{
				if(nowx+dis2>=D[nowD].x&&nowy+dis1>=up[nowUP].y)break;
				if(nowx+dis2<D[nowD].x&&nowy+dis1<up[nowUP].y)nowUP++,nowD++;
				else{
					if(nowx+dis2>=D[nowD].x){
						flag1=1;
						break;
					}
					else{
						flag2=1;
						break;
					}
				}
			}
		}
		if(nowUP>n&&nowD>n)break; 
		if(nowUP<=n&&nowD<=n&&disUP(nowUP,nowx)==disD(nowD,nowy)&&(!flag1&&!flag2)){
			nowx=up[nowUP].x,nowy=D[nowD].y;
//			cout<<"fuck1 "<<nowUP<<' '<<nowD<<endl;
			nowUP++,nowD++;
			flagUP=flagD=1;
		}
		else if(nowUP>n||flag1||(nowD<=n&&disUP(nowUP,nowx)>disD(nowD,nowy))){
			nowx+=(D[nowD].y-nowy);	
//			cout<<"fuckD "<<nowD<<endl;
			nowy=D[nowD].y;
			nowD++;
			flagUP=1; 
		}
		else{
			nowy+=(up[nowUP].x-nowx);
//			cout<<"fuckUP "<<nowUP<<endl;
			nowx=up[nowUP].x;
			nowUP++;
			flagD=1;
		}
//		cout<<"check "<<nowx<<' '<<nowy<<' '<<nowD<<' '<<nowUP<<endl;
		while(nowq<=m&&(q[nowq].y<nowy||(q[nowq].y==nowy&&q[nowq].x<=nowx))){
			if(q[nowq].y-q[nowq].x!=nowy-nowx)ans[q[nowq].id]=1;
			if(q[nowq].y==nowy&&q[nowq].x==nowx)ans[q[nowq].id]=1;
			nowq++;
		}
		nowy+=flagUP;
		nowx+=flagD;
//		cout<<"fuckljx "<<nowx<<' '<<nowy<<' '<<flagD<<' '<<flagUP<<endl;
	}
//	cout<<"check "<<nowx<<' '<<nowy<<endl;
	while(nowq<=m){
		if(q[nowq].y-q[nowq].x!=nowy-nowx)ans[q[nowq].id]=1;
		nowq++;
	}
	for(int i=1;i<=m;i++){
		if(q[i].x==0&&q[i].y==0)ans[q[i].id]=0;
	}
	for(int i=1;i<=m;i++){
		if(ans[i])printf("WIN\n");
		else printf("LOSE\n");
	}
}