#include<iostream>
#include<algorithm>
const int Max = 200000;
struct StarAndEnd //起始点
{
int start;
int end;
int index;
} SAE[Max];
int Find[Max];
bool UpAndDown(const StarAndEnd& a, const StarAndEnd& b) //排序
{
return a.start < b.start;
}
int main()
{
int n, q;
std::cin >> n >> q;
for (int i = 0; i < n; i++)
{
std::cin >> SAE[i].start >> SAE[i].end;
SAE[i].index = i + 1;
}
std::sort(SAE, SAE + n, UpAndDown);
for (int i = 0; i < q; i++)
{
std::cin >> Find[i];
}
for (int i = 0; i < q; i++)
{
int point = Find[i];
int left = 0, right = n - 1;
int result = -1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (SAE[mid].start <= point)
{
if (SAE[mid].end >= point)
{
result = SAE[mid].index;
break;
}
left = mid + 1;
}
else
{
right = mid - 1;
}
}
std::cout << result << std::endl;
}
return 0;
}