Can someone tell me why WA in Dementia Beautiful Circles

Here is my code it is showing WA idk why and on which case

/*

        /////////  /////      ////      ///
        //        //   //    //  //  // //
        //////   //    //   //    //   //
            //  // /// //  //         //
      //////// //      // //         //
      
         

*/

#include<bits/stdc++.h>
#include<assert.h>
using namespace std;
//typedef long long int ll;
typedef unsigned long long ll;
#define Fast ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(0);
#define fo(i,s,n) for(int i=s;i<n;i++)
#define mod 1000000007
#define umap unordered_map
#define pb(x) push_back(x)
#define all(x) (x).begin(), (x).end()
#define lb() lower_bound()
#define ub() upper_bound()
#define PI 3.14159265
#define S second
#define F first 
//fill(all(vec), 1);to fill vector with a number
//if (S.count(key)) returns 1 if set or map contain key else return 0
ll nCr(ll n,ll r)
{
	r = min(r,n-r);
	if(r<0)
		 return 0;
	if(r == 0)
		return 1;
	ll ans = 1;
	for(ll i = 1;i<=r;i++)
	{
		ans = ans*(n-i+1)/i;
    }
	return ans;
 		
}


ll logn(int n, int r) 
{ 
     return (n > r - 1) ? 1 + logn(n / r, r) : 0; 
} 


ll power(ll a,ll b) {
	if(b == 1) return a;
	if(b == 0) return 1;
	ll m1 = power(a,b/2);
	if(b%2) return m1*m1*a;
	return m1*m1;
}


bool isprime(ll a)
{
    if(a<=1)
        return false;
    if(a==2||a==3)
        return true;
    if(a%2==0||a%3==0)
        return false;
    for(ll i=5;i*i<=a;i=i+6)
    {
        if(a%i==0||a%(i+2)==0)
            return false;
    }
    return true;

}
/*********************//*********************///*********************///*********************//
ll t;
struct cir
{
    ll x,y,r;
};
bool com(cir a,cir b)
{
    
        return a.r>b.r;
    
    
}
void solve()
{
    ll n;
    cin>>n;
    cir a[n];
    map<ll,map<ll,map<ll,ll>>>mp;
    map<ll,map<ll,map<ll,ll>>>tr;
    fo(i,0,n)
    {
        cin>>a[i].x>>a[i].y>>a[i].r;
        mp[a[i].r*a[i].r*4][a[i].x][a[i].y]=i+1;
    }
    ll ans=0;
    sort(a,a+n,com);
    fo(i,0,n)
    {
        fo(j,i+1,n)
        {
            if(a[i].x==a[j].x&&a[i].y==a[j].y)
                continue;
            ll p=(a[i].x+a[j].x)/2;
            ll q=(a[i].y+a[j].y)/2;
            ll s=(a[i].r*a[i].r+a[j].r*a[j].r);
            if(mp[s][p][q]>0&&!tr[i][j][mp[s][p][q]-1])
            {
                ans++;
                tr[i][j][mp[s][p][q]-1]=1;
            }
        }
    }
    cout<<ans<<endl;
    
}



int main()
{
    Fast
/*
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
*/
    cin>>t;
    for(ll i=1;i<=t;i++)
    {
      solve();
    }

    
    return 0;
}