import java.util.Arrays;
import java.util.Comparator;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
//会从大到小排序
TreeMap<Integer,Integer> fight2hungry = new TreeMap<Integer,Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int result = o2-o1;
return result<=0 ? -1:result;
}
});
int[] energy = new int[m];
int[] hungrys = new int[n];
int index = 0;
while(index<m){
energy[index++]=sc.nextInt();
}
index = 0;
Arrays.sort(energy);
while(index<n){
int fight = sc.nextInt();
int hungry = sc.nextInt();
hungrys[index] = hungry;
fight2hungry.put(fight, index);
index++;
}
getResult(energy,fight2hungry,hungrys);
sc.close();
}
private static void getResult(int[] energy, TreeMap<Integer, Integer> fight2hungry, int[] hungrys) {
for(Entry<Integer,Integer> entry:fight2hungry.entrySet()){
int hungryIndex = entry.getValue();
int hungryValue = hungrys[hungryIndex];
int i=energy.length-1;
while(i>=0){
if(hungryValue>=energy[i] && energy[i]!=0){
hungryValue -= energy[i];
energy[i]=0;
hungrys[hungryIndex] = hungryValue;
}
i--;
}
}
for (int j = 0; j < hungrys.length; j++) {
System.out.println(hungrys[j]);
}
}
}