Getting WA for LEDIV

#include
#include<stdio.h>
#include<math.h>
using namespace std;

//to find GCD
int gcd(int a, int b)
{
if (b == 0)
{
return a;
}
else
{
return gcd(b, a % b);
}
}

//to find modulo of the factors
int factor(int n)
{ int i=0,flag=0;
int k=sqrt(n);
for(i=2;i<=k+1;i++)
{
if(n%i==0)
{
flag=1;
break;
}

}
    if(flag==0)
    {
     return n;
    }
    else
        return i;

}

int main()
{
int T;

scanf("%d",&T);

while(T--)
{ int i=0,N=0;
    scanf("%d",&N);

  int A[N],res=0;

for(i=0;i<N;i++)
{
    scanf("%d",&A[i]);
}
if (N==1)
    {
        if (A[0]==1)
            printf("-1\n");
        else
            printf("%d\n",factor(A[0]));
    }
else
{
res=gcd(A[0],A[1]);

for(i=2;i<N;i++)
{
    res=gcd(A[i],res);
}
if(res==1)
{
    cout<<"-1\n";
}
else
    cout<<res<<"\n";

}
}
return 0;

}