PROBLEM CODE: CLEANUP showing wrong answer even i got all public cases correct .please help me !

#include
using namespace std;

int main()
{

int t;
cin>>t;
while(t--)
{
 int n,m;

    cin>>n>>m;
    int arr[n];
    for(int i=0;i<n;i++)
        arr[i]=0;
    int temp;
    for(int i=0;i<m;i++)
    {
        cin>>temp;
        if(arr[temp-1] == 0)
        {
            arr[temp-1]=1;  //here  indicstes that job is completed at that index

        }
            //here we started index from 0 for sake of array simplicity
    }
           /* for(int i=0;i<n;i++)
             cout<<arr[i]<<"bb";*/
        //actual logic
        char cflag=' ';
        char carr[n];
        for(int i=0;i<n;i++)
        {

            if(arr[i]==1)
                continue;
            if(arr[i]==0 && cflag==' ')
            {
               cflag='c';
               carr[i]='c';

            }
            else if(arr[i]==0 && cflag=='a')
            {
               cflag='c';
               carr[i]='c';

            } else if(cflag=='c')
            {
                cflag='a';
                carr[i]='a';
            }

        }
       /* for(int i=0;i<n;i++)
            cout<<endl<<carr[i]<<"bb";*/
             for(int i=0;i<n;i++)
             {
                 if(carr[i]=='c')
                    cout<<i+1<<" ";
             }  cout<<"\n";
              for(int i=0;i<n;i++)
             {
                 if(carr[i]=='a')
                    cout<<i+1<<" ";
             }  cout<<"\n";
}

}