#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=100005;
int n,q;
int v[N],c[N];
int mx;
vector<pair<int,int>> vec[N];
queue<int> que;bool vis[N];int dis[N];
void SPFA(int S) {
fill(dis+1,dis+1+n,-1e18);
dis[S]=0;que.push(S);
int u;
while(!que.empty()) {
u=que.front();que.pop();
vis[u]=0;
for(auto& [v,w]:vec[u]) {
if(dis[v]<dis[u]+w) {
dis[v]=dis[u]+w;
if(!vis[v]) que.push(v);
vis[v]=1;
}
}
}
}
signed main() {
cin >> n >> q;
for(int i=1;i<=n;++i) cin >> v[i] >> c[i];
mx=1;
for(int i=2;i<=n;++i) if(v[mx]*c[i]>v[i]*c[mx]) mx=i;
for(int i=0;i<v[mx];++i) {
for(int j=1;j<=n;++j) {
vec[i].push_back({(i+v[j])%v[mx],c[j]-((i+v[j])/v[mx]*c[mx])});
}
}
SPFA(0);
int V;
for(int i=1;i<=q;++i) {
cin >> V;
if(dis[V%v[mx]]==-1e18) cout << -1 << endl;
else cout << V/v[mx]*c[mx]+dis[V%v[mx]] << endl;
}
return 0;
}
WA 求调