Unable to find error in Reverse Maximization (REMMAX) MAY LUNCHTIME 2019 DIVISION 2

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll t;
cin>>t;
while(t–)
{
ll n,i=0;
cin>>n;
if(n%10==0)
{
cout<<n-1<<endl;
continue;
}
else if(n/9==0)
{
cout<<n<<endl;
continue;
}
ll arr[20000]={0};
memset(arr,0,sizeof(arr));
ll ctr=0;
while(n>0)
{
ctr++;
arr[i]=n%10;
i++;
n/=10;
}
reverse(arr,arr+ctr);
if(arr[0]==1)
{
ll yaha=-1;
for(ll j=1;j<ctr;j++)
{
if(arr[j]!=0)
{
yaha=j;
break;
}
}
if(yaha==ctr-1)
{
for(ll j=0;j<ctr;j++)
cout<<arr[j];
cout<<endl;
}
else
{
ll stat=0;
for(ll j=yaha+1;j<ctr;j++)
{
if(arr[j]<9)
stat=1;
}
if(stat==1)
{
for(ll j=0;j<yaha;j++)
cout<<arr[j];
cout<<arr[yaha]-1;
for(ll j=yaha+1;j<ctr;j++)
{
cout<<9;
}
cout<<endl;
}
else
{
for(ll j=0;j<yaha;j++)
cout<<arr[j];
cout<<arr[yaha];
for(ll j=yaha+1;j<ctr;j++)
{
cout<<9;
}
cout<<endl;
}
}
}
else
{
ll status=0;
for(ll j=1;j<ctr;j++)
{
if(arr[j]<9)
status=1;
}
if(status==1)
{
cout<<arr[0]-1;
for(ll j=1;j<ctr;j++)
{
cout<<9;
}
cout<<endl;
}
else
{
cout<<arr[0];
for(ll j=1;j<ctr;j++)
{
cout<<9;
}
cout<<endl;
}
}
}
}