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]);
        }
    }
}