#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define db double
#define ll long long int
#define ull unsigned long long int
#define vs vector<string>
#define vll vector<ll>
#define vul vector<ull>
#define vi vector<int>
#define vb vector<bool>
#define vdb vector<db>
#define vc vector<char>
#define pb push_back
#define ppb pop_back
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
const int mod=1e9+7;
const int mxx=1e5+10;
vector<ll> primes,spf,p2,fact,invfact;
// precompute all powers of 2
void pow2(ll n,ll m){
p2.resize(n+2);
p2[0]=1;
for(ll i=1;i<n;i++)
p2[i]=(p2[i-1]*2)%m;
}
// linear diophantine eqn
ll extendedGCD(ll a,ll b,ll& x,ll& y){
if(b==0){
x=1;
y=0;
return a;
}
ll x1,y1,g;
g=extendedGCD(b,a%b,x1,y1);
x=y1;
y=x1-y1*(a/b);
return g;
}
// find the gcd of a,b
ll gcd(ll a,ll b){
if(b==0)
return a;
return gcd(b,a%b);
}
ll getLCM(ll a,ll b){
return (a*b)/gcd(a,b);
}
// calCulate Factorial and nCr
void calcFactorial(ll n,ll m){
fact.resize(n+4);
invfact.resize(n+4);
fact[0]=1;
invfact[0]=1;
for(ll i=1;i<n;i++){
fact[i]=(fact[i-1]*i)%m;
ll x,y;
extendedGCD(fact[i],m,x,y);
invfact[i]=(x%m+m)%m;
}
}
ll nCr(ll n,ll r){
if(n<r)
return 0;
ll ans=(((fact[n]*invfact[r])%mod)*invfact[n-r])%mod;
return ans;
}
ll nPr(ll n,ll r){
ll ans=(fact[n]*invfact[n-r])%mod;
return ans;
}
// return a^b under mod operation
ll binpow(ll a,ll b,ll m){
if(b==0)
return 1;
ll ans=1;
if(b&1)
ans=a%m;
ll half=binpow(a,b>>1,m);
half=(half*half)%m;
return ans=(ans*half)%m;
}
// get all primes in [1,n]
void getPrimes(ll n){
if(n<2)
return; // no prime less than 2
// spf contains factorization of all numbers between [1,n]
spf.resize(n+3);
for(int i=1;i<=n;i++){
spf[i]=2;
if(i&1)
spf[i]=i;
}
// p contains all primes between [1,n]
primes.pb(2);
for(ll i=3;i<=n;i++){
if(spf[i]==i){
primes.pb(i);
for(ll j=i*i;j<=n;j+=i)
spf[j]=i;
}
}
}
// check if a string is ispalindorme
ll ispalin(string s){
if(s.length()==0)
return 0;
ll i=0,j=s.length()-1;
while(i<j){
if(s[i]!=s[j])
return 0;
i++;
j--;
}
return 1;
}
// print Y/N
void printYN(int flg){
if(flg)
cout<<"YES";
else
cout<<"NO";
cout<<"\n";
}
// to get array input
void getArrayInput(vll& a,ll n){
for(ll i=0;i<n;i++)
cin>>a[i];
}
void getPrefixSum(vll& a,vll& p,ll n){
if(n){
p[0]=a[0];
for(ll i=1;i<n;i++)
p[i]=p[i-1]+a[i];
}
}
void printArray(vll& a,ll n){
for(ll i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<"\n";
}
// to get string input
string getStringInput(){
string s;
cin>>s;
return s;
}
// DSU
vector<ll> par,rnk;
void makeParent(ll n){
for(ll i=0;i<n;i++)
par[i]=i;
}
ll findParent(ll u){
if(par[u]==u)
return u;
return par[u]=findParent(par[u]);
}
void Union(ll u,ll v){
u=findParent(u);
v=findParent(v);
if(u!=v){
if(rnk[u]>rnk[v])
swap(u,v);
par[u]=v;
rnk[v]+=rnk[u];
}
}
/*
// LCA
ll timer,levMax;
vector<ll> tin,tout;
vector<vector<ll>> dp,g; // initialize with -1
void dfs(ll u,ll p=-1){
tin[u]=++timer;
dp[u][0]=p;
for(auto v:g[u]){
if(v!=p)
dfs(v,u);
}
tout[u]=++timer;
}
// isAncestor
ll isAncestor(ll u,ll v){
return tin[u]<=tin[v] and tout[v]<=tout[u];
}
// Binary-Lifting
void ConstructLCA(){
for(ll lev=1;lev<=levMax;lev++){
for(ll u=0;u<n;u++){
if(dp[u][lev-1]>=0)
dp[u][lev]=dp[dp[u][lev-1]][lev-1];
}
}
}
ll LCA(ll u,ll v){
if(isAncestor(u,v))
return u;
if(isAncestor(v,u))
return v;
for(ll i=levMax;i>=0;i--){
if(!isAncestor(dp[u][i],v))
u=dp[u][i];
}
return dp[u][0];
}
*/
void solver(){
ll n;
cin>>n;
vll a(n);
getArrayInput(a,n);
sort(a.begin(),a.end());
vll p(n),s(n);
p[0]=a[0];
s[n-1]=a[n-1];
for(ll i=1;i<n;i++){
p[i]=p[i-1]+a[i];
s[n-i-1]=s[n-i]+a[i];
}
for(ll i=0;i<n;i++){
ll j=lower_bound(a.begin(),a.end(),i+1)-a.begin();
ll mx=0,mn=n-j;
ll k=lower_bound(a.begin(),a.end(),i)-a.begin();
if(a[k]==i)
k--;
if(k>=0)
mx=n*(1+k)-p[k];
if(j<n){
mx-=s[j];
mx+=(n+1)*(n-j);
}
cout<<mn<<" "<<mx<<"\n";
}
}
int main(){
IOS;
ll t=1;
cin>>t;
//calcFactorial(8011,mod);
for(ll tc=1;tc<=t;tc++)
solver();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKI2RlZmluZSB2cyB2ZWN0b3I8c3RyaW5nPgojZGVmaW5lIHZsbCB2ZWN0b3I8bGw+CiNkZWZpbmUgdnVsIHZlY3Rvcjx1bGw+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSB2YiB2ZWN0b3I8Ym9vbD4KI2RlZmluZSB2ZGIgdmVjdG9yPGRiPgojZGVmaW5lIHZjIHZlY3RvcjxjaGFyPgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBwYiBwb3BfYmFjawojZGVmaW5lIElPUyBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CmNvbnN0IGludCBtb2Q9MWU5Kzc7IApjb25zdCBpbnQgbXh4PTFlNSsxMDsKIAp2ZWN0b3I8bGw+IHByaW1lcyxzcGYscDIsZmFjdCxpbnZmYWN0OwogCi8vIHByZWNvbXB1dGUgYWxsIHBvd2VycyBvZiAyCnZvaWQgcG93MihsbCBuLGxsIG0pewogICAgcDIucmVzaXplKG4rMik7CiAgICBwMlswXT0xOwogICAgZm9yKGxsIGk9MTtpPG47aSsrKQogICAgICAgIHAyW2ldPShwMltpLTFdKjIpJW07Cn0KIAogCi8vIGxpbmVhciBkaW9waGFudGluZSBlcW4KbGwgZXh0ZW5kZWRHQ0QobGwgYSxsbCBiLGxsJiB4LGxsJiB5KXsKICAgIGlmKGI9PTApewogICAgICAgIHg9MTsKICAgICAgICB5PTA7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9CiAgICBsbCB4MSx5MSxnOwogICAgZz1leHRlbmRlZEdDRChiLGElYix4MSx5MSk7CiAgICB4PXkxOwogICAgeT14MS15MSooYS9iKTsKICAgIHJldHVybiBnOwp9CiAKLy8gZmluZCB0aGUgZ2NkIG9mIGEsYgpsbCBnY2QobGwgYSxsbCBiKXsKICAgIGlmKGI9PTApCiAgICAgICAgcmV0dXJuIGE7CiAgICByZXR1cm4gZ2NkKGIsYSViKTsKfQogCmxsIGdldExDTShsbCBhLGxsIGIpewogICAgcmV0dXJuIChhKmIpL2djZChhLGIpOwp9CiAKIAovLyBjYWxDdWxhdGUgRmFjdG9yaWFsIGFuZCBuQ3IKdm9pZCBjYWxjRmFjdG9yaWFsKGxsIG4sbGwgbSl7CiAgICBmYWN0LnJlc2l6ZShuKzQpOwogICAgaW52ZmFjdC5yZXNpemUobis0KTsKIAogICAgZmFjdFswXT0xOwogICAgaW52ZmFjdFswXT0xOwogCiAgICBmb3IobGwgaT0xO2k8bjtpKyspewogICAgICAgIGZhY3RbaV09KGZhY3RbaS0xXSppKSVtOwogICAgICAgIGxsIHgseTsKICAgICAgICBleHRlbmRlZEdDRChmYWN0W2ldLG0seCx5KTsgICAgICAgICAgIAogICAgICAgIGludmZhY3RbaV09KHglbSttKSVtOwogICAgfQp9CiAKIApsbCBuQ3IobGwgbixsbCByKXsKICAgIGlmKG48cikKICAgICAgICByZXR1cm4gMDsKICAgIGxsIGFucz0oKChmYWN0W25dKmludmZhY3Rbcl0pJW1vZCkqaW52ZmFjdFtuLXJdKSVtb2Q7CiAgICByZXR1cm4gYW5zOwp9CiAKbGwgblByKGxsIG4sbGwgcil7CiAgICBsbCBhbnM9KGZhY3Rbbl0qaW52ZmFjdFtuLXJdKSVtb2Q7CiAgICByZXR1cm4gYW5zOwp9CiAKLy8gcmV0dXJuIGFeYiB1bmRlciBtb2Qgb3BlcmF0aW9uCmxsIGJpbnBvdyhsbCBhLGxsIGIsbGwgbSl7CiAgICBpZihiPT0wKQogICAgICAgIHJldHVybiAxOwogICAgbGwgYW5zPTE7CiAgICBpZihiJjEpCiAgICAgICAgYW5zPWElbTsKICAgIGxsIGhhbGY9YmlucG93KGEsYj4+MSxtKTsKICAgIGhhbGY9KGhhbGYqaGFsZiklbTsKICAgIHJldHVybiBhbnM9KGFucypoYWxmKSVtOwp9CiAKLy8gZ2V0IGFsbCBwcmltZXMgaW4gWzEsbl0Kdm9pZCBnZXRQcmltZXMobGwgbil7CiAgICBpZihuPDIpCiAgICAgICAgcmV0dXJuOyAvLyBubyBwcmltZSBsZXNzIHRoYW4gMgogCiAgICAvLyBzcGYgIGNvbnRhaW5zIGZhY3Rvcml6YXRpb24gb2YgYWxsIG51bWJlcnMgYmV0d2VlbiBbMSxuXQogICAgc3BmLnJlc2l6ZShuKzMpOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIHNwZltpXT0yOwogICAgICAgIGlmKGkmMSkKICAgICAgICAgICAgc3BmW2ldPWk7CiAgICB9CiAKICAgIC8vIHAgY29udGFpbnMgYWxsIHByaW1lcyBiZXR3ZWVuIFsxLG5dCiAgICBwcmltZXMucGIoMik7CiAgICBmb3IobGwgaT0zO2k8PW47aSsrKXsKICAgICAgICBpZihzcGZbaV09PWkpewogICAgICAgICAgICBwcmltZXMucGIoaSk7CiAgICAgICAgICAgIGZvcihsbCBqPWkqaTtqPD1uO2orPWkpCiAgICAgICAgICAgICAgICBzcGZbal09aTsKICAgICAgICB9CiAgICB9Cn0KIAovLyBjaGVjayBpZiBhIHN0cmluZyBpcyBpc3BhbGluZG9ybWUKbGwgaXNwYWxpbihzdHJpbmcgcyl7CiAgICBpZihzLmxlbmd0aCgpPT0wKQogICAgICAgIHJldHVybiAwOwogICAgbGwgaT0wLGo9cy5sZW5ndGgoKS0xOwogICAgd2hpbGUoaTxqKXsKICAgICAgICBpZihzW2ldIT1zW2pdKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpKys7CiAgICAgICAgai0tOwogICAgfQogICAgcmV0dXJuIDE7Cn0KIAovLyAgcHJpbnQgWS9OCnZvaWQgcHJpbnRZTihpbnQgZmxnKXsKICAgIGlmKGZsZykKICAgICAgICBjb3V0PDwiWUVTIjsKICAgIGVsc2UKICAgICAgICBjb3V0PDwiTk8iOwogICAgY291dDw8IlxuIjsKfQogCi8vIHRvIGdldCBhcnJheSBpbnB1dAp2b2lkIGdldEFycmF5SW5wdXQodmxsJiBhLGxsIG4pewogICAgZm9yKGxsIGk9MDtpPG47aSsrKQogICAgICAgIGNpbj4+YVtpXTsKfQogCnZvaWQgZ2V0UHJlZml4U3VtKHZsbCYgYSx2bGwmIHAsbGwgbil7CiAgICBpZihuKXsKICAgICAgICBwWzBdPWFbMF07CiAgICAgICAgZm9yKGxsIGk9MTtpPG47aSsrKQogICAgICAgICAgICBwW2ldPXBbaS0xXSthW2ldOyAgCiAgICB9Cn0gCiAKdm9pZCBwcmludEFycmF5KHZsbCYgYSxsbCBuKXsKICAgIGZvcihsbCBpPTA7aTxuO2krKykKICAgICAgICBjb3V0PDxhW2ldPDwiICI7CiAgICBjb3V0PDwiXG4iOwp9CiAKLy8gdG8gZ2V0IHN0cmluZyBpbnB1dApzdHJpbmcgZ2V0U3RyaW5nSW5wdXQoKXsKICAgIHN0cmluZyBzOwogICAgY2luPj5zOwogICAgcmV0dXJuIHM7Cn0KIAovLyBEU1UgCnZlY3RvcjxsbD4gcGFyLHJuazsKdm9pZCBtYWtlUGFyZW50KGxsIG4pewogICAgZm9yKGxsIGk9MDtpPG47aSsrKQogICAgICAgIHBhcltpXT1pOwp9CiAKbGwgZmluZFBhcmVudChsbCB1KXsKICAgIGlmKHBhclt1XT09dSkKICAgICAgICByZXR1cm4gdTsKICAgIHJldHVybiBwYXJbdV09ZmluZFBhcmVudChwYXJbdV0pOwp9CiAKdm9pZCBVbmlvbihsbCB1LGxsIHYpewogICAgdT1maW5kUGFyZW50KHUpOwogICAgdj1maW5kUGFyZW50KHYpOwogICAgaWYodSE9dil7CiAgICAgICAgaWYocm5rW3VdPnJua1t2XSkKICAgICAgICAgICAgc3dhcCh1LHYpOwogICAgICAgIHBhclt1XT12OwogICAgICAgIHJua1t2XSs9cm5rW3VdOwogICAgfQp9CiAKIAovKgovLyBMQ0EgCmxsIHRpbWVyLGxldk1heDsKdmVjdG9yPGxsPiB0aW4sdG91dDsKdmVjdG9yPHZlY3RvcjxsbD4+IGRwLGc7IC8vIGluaXRpYWxpemUgd2l0aCAtMQogCnZvaWQgZGZzKGxsIHUsbGwgcD0tMSl7CiAgICB0aW5bdV09Kyt0aW1lcjsKICAgIGRwW3VdWzBdPXA7CiAgICBmb3IoYXV0byB2OmdbdV0pewogICAgICAgIGlmKHYhPXApCiAgICAgICAgICAgIGRmcyh2LHUpOwogICAgfQogICAgdG91dFt1XT0rK3RpbWVyOwp9CiAKLy8gaXNBbmNlc3RvcgpsbCBpc0FuY2VzdG9yKGxsIHUsbGwgdil7CiAgICByZXR1cm4gdGluW3VdPD10aW5bdl0gYW5kIHRvdXRbdl08PXRvdXRbdV07Cn0KIAovLyBCaW5hcnktTGlmdGluZwp2b2lkIENvbnN0cnVjdExDQSgpewogICAgZm9yKGxsIGxldj0xO2xldjw9bGV2TWF4O2xldisrKXsKICAgICAgICBmb3IobGwgdT0wO3U8bjt1KyspewogICAgICAgICAgICBpZihkcFt1XVtsZXYtMV0+PTApCiAgICAgICAgICAgICAgICBkcFt1XVtsZXZdPWRwW2RwW3VdW2xldi0xXV1bbGV2LTFdOwogICAgICAgIH0KICAgIH0KfQogCmxsIExDQShsbCB1LGxsIHYpewogICAgaWYoaXNBbmNlc3Rvcih1LHYpKQogICAgICAgIHJldHVybiB1OwogICAgaWYoaXNBbmNlc3Rvcih2LHUpKQogICAgICAgIHJldHVybiB2OwogICAgICAgIAogICAgZm9yKGxsIGk9bGV2TWF4O2k+PTA7aS0tKXsKICAgICAgICBpZighaXNBbmNlc3RvcihkcFt1XVtpXSx2KSkKICAgICAgICAgICAgdT1kcFt1XVtpXTsKICAgIH0KICAgIAogICAgcmV0dXJuIGRwW3VdWzBdOwp9CiovCiAKdm9pZCBzb2x2ZXIoKXsgICAKICAgIGxsIG47CiAgICBjaW4+Pm47CiAgICAKICAgIHZsbCBhKG4pOwogICAgZ2V0QXJyYXlJbnB1dChhLG4pOwogICAgc29ydChhLmJlZ2luKCksYS5lbmQoKSk7CiAgICAKICAgIHZsbCBwKG4pLHMobik7CiAgICBwWzBdPWFbMF07CiAgICBzW24tMV09YVtuLTFdOwogICAgZm9yKGxsIGk9MTtpPG47aSsrKXsKICAgICAgICBwW2ldPXBbaS0xXSthW2ldOwogICAgICAgIHNbbi1pLTFdPXNbbi1pXSthW2ldOwogICAgfQogICAgZm9yKGxsIGk9MDtpPG47aSsrKXsKICAgICAgICBsbCBqPWxvd2VyX2JvdW5kKGEuYmVnaW4oKSxhLmVuZCgpLGkrMSktYS5iZWdpbigpOwogICAgICAgIGxsIG14PTAsbW49bi1qOwogICAgICAgIAogICAgICAgIGxsIGs9bG93ZXJfYm91bmQoYS5iZWdpbigpLGEuZW5kKCksaSktYS5iZWdpbigpOwogICAgICAgIGlmKGFba109PWkpCiAgICAgICAgCWstLTsKICAgICAgICAJCiAgICAgICAgaWYoaz49MCkKICAgICAgICAJbXg9biooMStrKS1wW2tdOwogICAgICAgIAkKICAgICAgICBpZihqPG4pewoJCQlteC09c1tqXTsKCQkJbXgrPShuKzEpKihuLWopOwogICAgICAgIH0KICAgICAgICAKCQljb3V0PDxtbjw8IiAiPDxteDw8IlxuIjsKICAgIH0KfQogCmludCBtYWluKCl7CiAgICBJT1M7CiAgICBsbCB0PTE7CiAgICBjaW4+PnQ7CiAgICAvL2NhbGNGYWN0b3JpYWwoODAxMSxtb2QpOwogCiAgICBmb3IobGwgdGM9MTt0Yzw9dDt0YysrKQogICAgICAgIHNvbHZlcigpOwp9CgoKCgoKCgoKCgoKCgoK