import java.util.*;
import java.io.*;
import java.text.*;
import java.math.*;

public class Codeforces{
	boolean multipleTC=false;
	int INF=(int)1e9+7;
	void solve( int tc )throws Exception{
		int n=ni(), q=ni();
		int[]a = new int[35], b=new int[35];
		for( int i=0; i<n; i++ ) a[Integer.toBinaryString(ni()).length()]++;
		tki: for( int i=0; i<q; i++ ){
			int ans=0, val=ni(), ac=0, acc=0;
				for( int j=34; j>=0; j-- ){
						int tmp= Math.min(a[j], (val-ans)/(1<<(j-1)));
						ac+=tmp;
						ans+=tmp*(1<<(j-1));
					}pni( ans!=val?-1:ac );
		}
	}
	
	void run() throws Exception{
		in = new FastReader();
		out = new PrintWriter( System.out );
		for( int i=1, t=(multipleTC)?ni():1 ; i<=t; i++ )solve(i);
		out.flush();
		out.close();
	}
	
	
	public static void main( String[]args )throws Exception{
		new Codeforces().run();
	}
	
	FastReader in;
	PrintWriter out;
	
	long[]la( int n )throws Exception{ long[]a=new long[n]; for( int i=0; i<n; i++ )a[i]=nl(); return a; }
	int[]ia( int n )throws Exception{ int[]a=new int[n]; for( int i=0; i<n; i++ )a[i]=ni(); return a; }
	int gcd( int a, int b ){ return (b==0)?a:gcd(b,a%b); }
	void p(Object o){ out.print(o); }
	void pn(Object o){ out.println(o); }
	void pni(Object o){ out.println(o); out.flush(); }
	String n(){ return in.next(); }
	int ni() throws Exception{ return Integer.parseInt(in.next()); }
	long nl() throws Exception{ return Long.parseLong(in.next()); }
	
	class FastReader{
		BufferedReader br;
		StringTokenizer st;
		public FastReader(){
			br=new BufferedReader(new InputStreamReader(System.in));
		}
		String next(){
			while( st==null || !st.hasMoreElements() ){
				try{
					st = new StringTokenizer( br.readLine() );
				}catch( IOException e ){
					e.printStackTrace();
				}
			}return st.nextToken();
		}
		String nextLine(){
			String str = "";
			try{
				str = br.readLine();
			}catch( IOException e ){
				e.printStackTrace();
			}return str;
		}
	}
}
