#include #include #include #include using namespace std; __int64 x,y; __int64 extended_euclid(int s,int t) //拓展欧拉函数 { __int64 i,temp; if(t==0) { x=1; y=0; return s; } else { i=extended_euclid(t,s%t); temp=x; x=y; y=temp-(s/t*y); return i; } } int a[55],vis[55],b[55]; long long A[55],B[55]; int main() { int T; __int64 a1,a2,b1,b2,t,c,n,m,i,j; scanf("%d",&T); for (;T--;) { scanf("%lld",&t); for (i=1;i<=t;++i) scanf("%d",&a[i]),vis[i]=1,b[a[i]]=i; for (i=1;i<=t;++i) a[i]=b[i]; int last=1,tot=0; for (i=1;ia[i]) { for (j=last;j<=t;++j) sum+=vis[j]; for (j=1;j<=a[i];++j) sum+=vis[j]; } else for (j=last;j<=a[i];++j) sum+=vis[j]; B[tot]=sum; vis[a[i]]=0; last=a[i]; } a1=A[1];b1=B[1]; int ok=0; for(i=2;i<=tot;i++) { a2=A[i]; b2=B[i]; if(ok) continue; int e=extended_euclid(a1,a2); c=b2-b1; if(c%e) { ok=1; continue; } int q=a2/e; x=(x*c/e%q+q)%q; //求最小的解。。 b1=a1*x+b1; // b=x; a1=a1*a2/e; // a为a1和a2的最小公倍数。 } if(ok) printf("Creation August is a SB!\n"); else printf("%lld\n",b1); } return 0; }