#include<bits/stdc++.h>
using namespace std;
long long n, q, pit;
long long nula = 0;
long long poc;
long long prvi, poslednji;
long long kol, tren;
long long d[300050], p[300050], br;
struct slog
{
   long long ind;
   long long vred;
   char kar;
};
slog niz[600050];

int main()
{
   scanf("%lld %lld", &n, &q);
   scanf("%lld %lld", &d[1], &p[1]);
   kol = 0;

   /// OVAJ POCETAK JE OK

   prvi = d[1]; /// PRE OVOG SU SVE NULE
   br++;
   niz[br].ind = d[1]; /// INDEKS 1. U NIZU JE PRVI DAN KADA JEDE
   niz[br].vred = 1; /// POJEDE 1
   niz[br].kar = 'R';

   br++;
   niz[br].ind = niz[br-1].ind + p[1] - 1; /// INDEKS 2. U NIZU JE POSLEDNJI DAN DO KOG JOJ TRAJU KEKSI
   niz[br].vred = p[1]; /// POJEDE P
   tren = niz[br].ind;

   for(int i=2; i<=n; i++)
   {
      scanf("%lld %lld", &d[i], &p[i]);

      if(d[i] > tren) /// OVAJ SE JAVLJA POSLE TRENUTNOG
      {
         niz[br].kar = 'S'; /// PROSLI STAGNIRA

         br++;
         niz[br].ind = d[i]; /// OVAJ JE PRVI NOVI
         niz[br].vred= niz[br-1].vred + 1; /// NJEGOVA VREDNOST JE VREDNOST PROSLOG + 1
         niz[br].kar = 'R'; /// ON RASTE DO SLEDECEG

         br++;
         niz[br].ind = niz[br-1].ind + p[i] - 1;  /// RASTE DO OVOG BROJA
         niz[br].vred = niz[br-1].vred + p[i] - 1;/// TU CE IMATI OVU VREDNOST
         tren = niz[br].ind; /// TRENUTNO SE NALAZI NA OVOM INDEKSU
      }


      else /// AKO SE JAVLJA <= TRENUTNOG
      {
         niz[br].kar = 'R'; /// PROSLI RASTE

         br++;
         niz[br].ind = niz[br-1].ind + p[i];   /// RASTE DO OVOG
         niz[br].vred = niz[br-1].vred + p[i]; /// RASTE DO PROSLOG + SADASNJI
         tren = niz[br].ind;
     }

   }
   niz[br].kar = 'S';
   poslednji = niz[br].ind; /// AKO JE VECI OD OVOG OVO JE RESENJE
   poc = 1;

   /// PROVERA ISPOD NE RADI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


   for(int i=1; i<=q; i++)
   {
      scanf("%lld", &pit);

      if(pit < prvi or pit > poslednji) /// AKO ISKACE
      {
         if(pit < prvi) /// NECE NISTA JESTI
            printf("%lld \n", nula);

         else /// POJESCE SVE
            printf("%lld \n", niz[br].vred);
      }

      else
      {
         for(int j = poc; j<= br; j++) /// JEDAN PROlAZ KROZ NIZ, STO ZNACI DA JE LINEARNO
         {
            if(niz[j].ind <= pit and niz[j+1].ind >= pit) /// AKO JE OVAJ INDEKS PRE= PITANJA I SLEDECI POSLE= PITANJA
            {
               /// VAMO JE RESENJE
               poc = j;

               if(pit == niz[j].ind)
               {
                  printf("%lld \n", niz[j].vred);
                  goto ovde;
               }

               if(pit == niz[j+1].ind)
               {
                   printf("%lld \n", niz[j+1].vred);
                   goto ovde;
               }

               if(niz[j].kar == 'S') /// AKO NE RASTE
                  printf("%lld \n", niz[j].vred);

               else
                  printf("%lld \n", niz[j].vred + pit - niz[j].ind);

               goto ovde;
            }
         }
      }
      ovde:
      i=i;
      /// FUNKC ZA RESENJE
   }
   return 0;
}