[HELP] What is wrong in my code?

I have been trying OR-thodox Distinction using nlogn approach but not getting AC. Please someone help

   #include<bits/stdc++.h>
using namespace std;
#define tw()          int t; cin>>t; while(t--)
#define ll            long long
#define pb            push_back
#define vi            vector<int> 
#define vl            vector<ll> 
#define all(x)        x.begin(),x.end()
#define allcmp(x)     x.begin(),x.end(),cmp
const int MOD = 1000000007;
  vl bit(65),bit1,bit2;

void decToBinary(ll n) 
{ 
    ll i = 0; 
    while (n > 0) { 
        bit[i]+=(n % 2); 
        n = n / 2;
        i++; 
    }  

}

ll decrease1(ll n)
{
  
  ll i = 0;
  while (n > 0)
  {
    bit1[i] += (n % 2)==1 ? -1 : 0;
    n = n / 2;
  
  
    i++;
  }

  ll sum = 0;
  for (ll i = 0; i < 65; i++)
  {
    if (bit1[i] > 0)
      sum += pow(2, i);
  }
  return sum;
}

ll decrease2(ll n)
{

  ll x = n;
  ll i = 0;
  while (n > 0)
  {
    bit2[i] += (n % 2)==1? -1 : 0;
    n = n / 2;
  
    
    i++;
  }

  ll sum = 0;
  for (ll i = 0; i < 65; i++)
  {
    if (bit2[i] > 0)
      sum += pow(2, i);
  }
  return sum;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    tw(){ bool ok=true;
      fill(all(bit), 0);
      ll n;
      cin >> n;
      vl v(n);
      ll sum = 0;
      map<ll, ll> m;
      int z = 0;
      for (auto &x : v)
      {
        cin >> x;
        m[x]++;
        if (m[x] > 1)
          ok = false;
      }

      for (auto x : v)
      {

        decToBinary(x);
      }

        ll sum1 = 0;
        for (ll i = 0; i < 65; i++)
        {
          if (bit[i] > 0)
            sum1 += pow(2, i);
        }
        m[sum1]++;
        if (m[sum1] > 1)
          ok = false;

        bit1 = bit;
        bit2 = bit;
        for (int i = 0; i < n -1  && ok; i++)
        {
          ll x;
          if (i > 0)
          {
            x = decrease1(v[i - 1]);
            m[x]++;
            if (m[x] > 1)
            {
              ok = false;
              break;
            }
          }  

}

for (int i = n - 1; i > 0 && ok; i--)
{
  ll x;
  if (i < n - 1)
  {
    x = decrease2(v[i + 1]);
    m[x]++;
    if (m[x] > 1)
    {
      ok = false;
      break;
    }
  }
}

           if(ok){cout<<"YES\n";}
        else{cout<<"NO\n";}
    }

 return 0;}