#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void smin(T &a, T b) {
  a = a < b ? a : b;
}
template <typename T>
inline void smax(T &a, T b) {
  a = a > b ? a : b;
}
void err(istream_iterator<string> it) { cout << endl; }
template <typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << ", ";
  err(++it, args...);
}
template <typename T>
inline void Int(T &n) {
  n = 0;
  int f = 1;
  register int ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = -1;
  for (; isdigit(ch); ch = getchar()) n = (n << 3) + (n << 1) + ch - '0';
  n = n * f;
}
template <typename T, typename TT>
inline void Int(T &n, TT &m) {
  Int(n);
  Int(m);
}
template <typename T, typename TT, typename TTT>
inline void Int(T &n, TT &m, TTT &l) {
  Int(n, m);
  Int(l);
}
const int mod = (int)1e9 + 7;
inline int add(int a, int b) {
  a += b;
  return a >= mod ? a - mod : a;
}
inline int sub(int a, int b) {
  a -= b;
  return a < 0 ? a + mod : a;
}
inline int mul(int a, int b) { return (long long)a * b % mod; }
const int inf = (int)2e9 + 5;
const long long Inf = (long long)2e18 + 5;
const int N = (int)2e5 + 5;
int solve() {
  long long n;
  int m;
  Int(n, m);
  std::vector<int> dp(66, 0);
  long long tot = 0;
  for (int i = 0; i < m; i++) {
    long long x;
    Int(x);
    tot += x;
    for (int j = 62; j >= 0; j--) {
      if ((1LL << j) == x) {
        dp[j]++;
        break;
      }
    }
  }
  if (tot < n) return printf("-1\n");
  long long ans = 0;
  for (int i = 0; i <= 62; i++) {
    if ((n >> i) & 1) {
      if (dp[i] == 0) {
        for (int j = i + 1; j <= 62; j++) {
          int y = dp[j];
          dp[j]--;
          dp[j - 1] += 2;
          ans++;
          if (y > 0) break;
        }
      } else {
        dp[i]--;
        dp[i + 1] += dp[i] / 2;
      }
    } else {
      dp[i + 1] += dp[i] / 2;
    }
  }
  printf("%d\n", ans);
  return 0;
}
int main() {
  int test = 1, tc = 0;
  Int(test);
  while (test--) {
    solve();
  }
  return 0;
}
