#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;
}