#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 200005;
const int MAXQ = 200005;
const int INF = 2e9;
namespace FAST
{
int n,q;
vector<int> a,b,setx,sety;
bool rez[MAXQ];
void solve_separate()//we will get (setx, sety) from 2 separate elements
{
for(int i=1;i<=q;i++)
{
int maxri = -INF, maxle = -INF;
for(int j=1;j<=n;j++)
{
if(a[j] <= setx[i] && b[j] != sety[i])
{
maxri = max(maxri, b[j]);
}
if(b[j] <= sety[i] && a[j] != setx[i])
{
maxle = max(maxle, a[j]);
}
}
int cnt_both = 0, cnt_x = 0, cnt_y = 0;
for(int j=1;j<=n;j++)
{
if(a[j] == setx[i] && b[j] == sety[i])
cnt_both++;
else if(a[j] == setx[i])
cnt_x++;
else if(b[j] == sety[i])
cnt_y++;
}
if(cnt_both == 0)
{
if(cnt_x > 0 && cnt_y > 0)
{
if(maxle >= setx[i] && maxri >= sety[i])
{
rez[i] = 1;
}
}
}
else if(cnt_both == 1)
{
if(cnt_x + 1 > 0 && cnt_y > 0)
{
if(maxle >= setx[i])
{
rez[i] = 1;
}
}
if(cnt_x > 0 && cnt_y + 1 > 0)
{
if(maxri >= sety[i])
{
rez[i] = 1;
}
}
}
else
{
rez[i] = 1;
}
}
}
void solve_one()//we will get (setx, sety) from the same element
{
for(int i=1;i<=q;i++)
{
int cnt_both = 0;
for(int j=1;j<=n;j++)
{
if(a[j] == setx[i] && b[j] == sety[i])
cnt_both++;
}
if(cnt_both == 0)
continue;
bool found = 0;
if(cnt_both > 1)
found = 1;
for(int j=1;j<=n;j++)
{
if(a[j] >= setx[i] && b[j] >= sety[i] && !(a[j] == setx[i] && b[j] == sety[i]))
{
found = 1;
}
}
if(found)
{
rez[i] = 1;
continue;
}
bool ex1 = 0, ex2 = 0;
for(int j=1;j<=n;j++)
{
if(a[j] <= setx[i] && b[j] >= sety[i] && !(a[j] == setx[i] && b[j] == sety[i]))
ex1 = 1;
if(a[j] >= setx[i] && b[j] <= sety[i] && !(a[j] == setx[i] && b[j] == sety[i]))
ex2 = 1;
}
if(ex1 && ex2)
{
rez[i] = 1;
continue;
}
}
}
void flip()
{
for(int i=1;i<=n;i++)
{
a[i] = -a[i];
b[i] = -b[i];
}
for(int i=1;i<=q;i++)
{
setx[i] = -setx[i];
sety[i] = -sety[i];
}
}
vector<int> solve(int copn, int copq, vector<int> copa, vector<int> copb, vector<int> copsetx, vector<int> copsety)
{
n = copn;
q = copq;
a = copa;
b = copb;
setx = copsetx;
sety = copsety;
for(int i=1;i<=q;i++)
rez[i] = 0;
solve_separate();
solve_one();
flip();
solve_separate();
solve_one();
flip();
vector<int> sol;
for(int i=1;i<=q;i++)
if(rez[i])
sol.push_back(i);
return sol;
}
}
namespace BRUT
{
int n,q;
vector<int> a,b,setx,sety;
bool rez[MAXQ];
vector<int> solve(int copn, int copq, vector<int> copa, vector<int> copb, vector<int> copsetx, vector<int> copsety)
{
n = copn;
q = copq;
a = copa;
b = copb;
setx = copsetx;
sety = copsety;
for(int i=1;i<=q;i++)
rez[i] = 0;
for(int i=1;i<=q;i++)
{
}
vector<int> sol;
for(int i=1;i<=q;i++)
if(rez[i])
sol.push_back(i);
return sol;
}
}
void stress()
{
exit(0);
}
signed main()
{
//stress();
ios_base::sync_with_stdio(0);cin.tie(0);
int n,q;
cin>>n>>q;
vector<int> a(n+2),b(n+2),setx(q+2),sety(q+2);
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
}
for(int i=1;i<=q;i++)
{
cin>>setx[i]>>sety[i];
}
vector<int> sol = FAST::solve(n,q,a,b,setx,sety);
for(int x:sol) cout<<x<<" ";
return 0;
}