#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
#define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
const int maxN=2e5+5;
int n, m, a[maxN], dp[maxN];
void solve()
{
}
int32_t main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
int test=1;
cin>>test;
while(test--)
{
cin>>n>>m;
map<int,int>mp;
for(int i=1; i<=n+1; i+=1) dp[i]=0;
for(int i=1; i<=m; i+=1) cin>>a[i], mp[min(n,a[i])]++;
dp[n+1]=0;
for(int i=n; i>=1; i-=1)
{
dp[i]=dp[i+1]+mp[i];
}
// debug_arr(dp, n);
int ans=0;
for(int i=1; i<n; i+=1)
{
ans=(long long)(ans+1ll*dp[i]*dp[n-i]);
}
for(int i=1; i<n; i+=1)
{
ans-=dp[max(i,n-i)];
}
cout<<ans<<'\n';
solve();
}
}
// dp[i] la so mau co >= i hop son
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzaXooeCkgKGludCkoeC5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGRlYnVnX2Fycih4LGxlbikgZm9yKGludCBfPTE7IF88PWxlbjsgXysrKSBjb3V0PDx4W19dPDwiICI7IGNvdXQ8PCdcbic7CiNkZWZpbmUgZGVidWcoeCkgY291dDw8J1xuJzw8I3g8PCI6ICI8PHg8PCdcbic7CmNvbnN0IGludCBtYXhOPTJlNSs1OwoKaW50IG4sIG0sIGFbbWF4Tl0sIGRwW21heE5dOwp2b2lkIHNvbHZlKCkKewogICAgCn0KCmludDMyX3QgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiAgICBpbnQgdGVzdD0xOwogICAgY2luPj50ZXN0OwogICAgd2hpbGUodGVzdC0tKQogICAgewogICAgICAgIGNpbj4+bj4+bTsKICAgICAgICBtYXA8aW50LGludD5tcDsKICAgICAgICBmb3IoaW50IGk9MTsgaTw9bisxOyBpKz0xKSBkcFtpXT0wOwogICAgICAgIGZvcihpbnQgaT0xOyBpPD1tOyBpKz0xKSBjaW4+PmFbaV0sIG1wW21pbihuLGFbaV0pXSsrOwogICAgICAgIGRwW24rMV09MDsKICAgICAgICBmb3IoaW50IGk9bjsgaT49MTsgaS09MSkKICAgICAgICB7CiAgICAgICAgICAgIGRwW2ldPWRwW2krMV0rbXBbaV07CiAgICAgICAgfQogICAgICAgIC8vIGRlYnVnX2FycihkcCwgbik7CiAgICAgICAgaW50IGFucz0wOwogICAgICAgIGZvcihpbnQgaT0xOyBpPG47IGkrPTEpCiAgICAgICAgewogICAgICAgICAgICBhbnM9KGxvbmcgbG9uZykoYW5zKzFsbCpkcFtpXSpkcFtuLWldKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7IGk8bjsgaSs9MSkKICAgICAgICB7CiAgICAgICAgICAgIGFucy09ZHBbbWF4KGksbi1pKV07CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGFuczw8J1xuJzsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9CgovLyBkcFtpXSBsYSBzbyBtYXUgY28gPj0gaSBob3Agc29u