Can anyone explain me what is yhe problem with my program.
#include<cstdio>
using namespace std;
int k,nr,n,p,u,i,j,obt[1000001],fol[1000001],ap[1000001],x[1000001],x1[1000001],cif[100];
char bst[1000002][32],cr[32];
int cmp(char a[32],int n,char b[32],int m)
{
int i;
if(n<m) return -1;
if(n>m) return 1;
for(i=1;i<=n;i++)
if(a[i]!=b[i]) break;
if(a[i]>=b[i]) return 1;
else return -1;
}
int main()
{
//freopen("input","r",stdin);
//freopen("output","w",stdout);
scanf("%d",&n);
u=2;
x[1]=1%n;
x[2]=2%n;
ap[1%n]=1;
ap[2%n]=1;
obt[1%n]=1;
obt[2%n]=2;
fol[1%n]=1;
fol[2%n]=1;
bst[1%n][1]='1';
bst[2%n][1]='2';
for(i=2;i<=30;i++)
{
p=0;
for(j=1;j<=u;j++)
{
for(k=1;k<=fol[x[j]];k++)
cr[k]=bst[x[j]][k];
cr[k]='1';
if(ap[(x[j]*10+1)%n]==0||cmp(bst[(x[j]*10+1)%n],fol[(x[j]*10+1)%n],cr,fol[x[j]]+1)>0)
{
ap[(x[j]*10+1)%n]=1;
obt[(x[j]*10+1)%n]=1;
fol[(x[j]*10+1)%n]=fol[x[j]]+1;
for(k=1;k<=fol[x[j]]+1;k++)
bst[(x[j]*10+1)%n][k]=cr[k];
p++;
x1[p]=(x[j]*10+1)%n;
}
cr[fol[x[j]]+1]='2';
if(ap[(x[j]*10+2)%n]==0||cmp(bst[(x[j]*10+2)%n],fol[(x[j]*10+2)%n],cr,fol[x[j]]+1)>0)
{
ap[(x[j]*10+2)%n]=1;
obt[(x[j]*10+2)%n]=2;
fol[(x[j]*10+2)%n]=fol[x[j]]+1;
for(k=1;k<=fol[x[j]]+1;k++)
bst[(x[j]*10+2)%n][k]=cr[k];
p++;
x1[p]=(x[j]*10+2)%n;
}
}
if(ap[0]==1) break;
u=p;
for(j=1;j<=u;j++)
x[j]=x1[j];
}
nr=0;
if(ap[0]==0) printf("Impossible\n");
else
{
for(i=1;i<=fol[0];i++)
printf("%d",bst[0][i]-48);
printf("\n");
}
return 0;
}