using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace B1
{
    class Program
    {
        struct pak
        {
            public long d;
            public long p;
        }
        static long min(long a, long b)
        {
            if (a < b) return a;
            else return b;
        }
        static long bp(long k, pak[] a, long l, int n)
        {
            if (k < a[0].d) return 0;
            long br = 0;
            int i=1;
            while (i < n && a[i].d <= k)
            {
                br += a[i-1].p;
                i++;
            }
            i--;
            br += min(a[i].p, k-a[i].d+1);
            return br;
        }
        static void sredi(pak[] a, int n)
        {
            for (int i = 1; i < n; i++)
            {
                if (a[i].d - a[i - 1].d < a[i - 1].p)
                {
                    long x = a[i - 1].p - (a[i].d - a[i - 1].d);
                    a[i - 1].p -= x;
                    a[i].p += x;
                }
            }
        }
        static void Main(string[] args)
        {
            int n, q;
            pak[] a = new pak[310000];
            long[] k = new long[310000];
            string[] s=Console.ReadLine().Split();
            n=int.Parse(s[0]);
            q=int.Parse(s[1]);
            for (int i = 0; i < n; i++)
			{
                s=Console.ReadLine().Split();
                a[i].d=long.Parse(s[0]);
                a[i].p=long.Parse(s[1]);
			}
            sredi(a, n);
            int br=0;
            for (int i = 0; i < q; i++)
            {
                k[i] = long.Parse(Console.ReadLine());
                k[i]=bp(k[i], a, 0, n);

            }
            for (int i = 0; i < q; i++)
            {
                Console.WriteLine(k[i]);
            }
        }
    }
}