﻿"use strict";

// // var inp = readline().split(" ").map(function(x) { return parseInt(x); });
// var inp = prompt().split(" ").map(function(x) { return parseInt(x); });
// var n = inp[0];
// var k = inp[1];
// // var a = readline().split(" ").map(function(x) { return parseInt(x); });
// var a = prompt().split(" ").map(function(x) { return parseInt(x); });

// var maxIntensivity = 0;

// for (var i = k; i <= a.length; i++){
//     for (var j = 0; j <= a.length - i; j++){
//         var intensivity = 0;
//         for (var q = j; q < j + i; q++)
//             intensivity += a[q];
//         intensivity /= i;
//         if (intensivity > maxIntensivity) maxIntensivity = intensivity;
//         console.log(intensivity, i, j);
//     }
// }

// console.log(maxIntensivity);
// // print(maxIntensivity);

//c
var inp = readline().split(" ").map(function(x) { return parseInt(x); });
var n = inp[0];
var q = inp[1];
var a = readline().split(" ").map(function(x) { return parseInt(x); });

function conv(a) {
    var b = 0;
    while(a != 2^b) b++;
    return b;
}

for (var i = 0; i < a.length; i++)
    a[i] = conv(a[i]);


a.sort(function compare(a, b) {
    return b - a;
});
var res = 0;
for(var qc = 0; qc < q; qc++){
    res = 0;

    var b = a;

    var s = readline();
    var c = 0;
    for (var i = 0; i < b.length; i++){
        if (2^b[i] <= s - c) {
            res++;
            c += 2^b[i];
            b = b.slice(0, i).concat(b.slice(i + 1));
            i = 0;
        }
    }

    if (s == c) print(res);
    else
        print('-1');
}