#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
typedef long long LL;
int a[N];
int n , m;
map<int, LL>mp;
bool check(LL x)
{
  LL sum = 0 , tmp = 0;
   for(int i = 1; i <= n; i ++)
   {
     if(mp[i] > x)sum += mp[i] - x;
     else tmp += (x - mp[i]) / 2;
   }
   return tmp >= sum;
}
int main()
{
  int t;
  cin >> t;
  while(t --)
  {
    mp.clear();
    cin >> n >> m;
    
    for(int i = 1; i <= m; i ++)
    {
      cin >> a[i];
      mp[a[i]] ++;
    }
    LL l = 0, r = 1e10;
    while(l < r)
    {
      LL mid = (l + r) >> 1;
      if(check(mid))r = mid;
      else l = mid + 1;
    }
    cout << l << endl;
  }
}

二分时间的条件就是 每个工人在设定的时间内能干的最多任务之和 与 m 比较, 如果大于m则缩短时间,否则增加时间(工人首先干自己精通的任务,其次用剩余的时间干不精通的任务 )