import java.io.*;
import java.util.*;

public class D {

	public static void main(String[] args)throws IOException
    {	
		BufferedReader ob = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer();

		String s[]=ob.readLine().split(" ");
        int n = Integer.parseInt(s[0]);
        int q = Integer.parseInt(s[1]);
 
        String str[]=ob.readLine().split(" ");
        Map<Integer,Integer> map=new HashMap<>();
        long max=0;
        for(int i=0;i<n;i++)
        {
        	int x=Integer.parseInt(str[i]);
        	max+=(long)x;
        	if(map.containsKey(x))
        		map.put(x,map.get(x)+1);
        	else
        		map.put(x,1);
        }
        
        List<Integer> list=new ArrayList<>();
        for(int k:map.keySet())
        	list.add(k);
        Collections.sort(list);
        
        while(q-->0)
        {
        	int key=Integer.parseInt(ob.readLine());
        	if(key>max)
        	{
        		sb.append("-1\n");
        		continue;
        	}
        	int idx=Collections.binarySearch(list, key);
        	if(idx>0)
        	{
        		sb.append("1\n");
        		continue;
        	}
        	idx+=1;
        	idx*=-1;
        	if(idx==list.size())
        		idx--;
        	if(idx<0)
        		idx=0;
        	int count=0;
        	for(int i=idx;i>=0;i--)
        	{
        		long div=key/list.get(i);
        		long val=map.get(list.get(i));
        		count+=Math.min(div,val);
        		key-=(Math.min(div,val) * list.get(i));
        	}
        	if(key>0)
        		count=-1;
        	
        	sb.append(count+"\n");
        }
        System.out.println(sb);
    }
}
	