#include #include #include #include #include #include #include #include using namespace std; #define rep(i, l, r) for(int i=l; i<=r; i++) #define dow(i, l, r) for(int i=l; i>=r; i--) #define travel(x) for(edge *p=fir[x]; p; p=p->n) #define travel_sap(x) for(edge *p=fir[x]; p; p=p->n) #define clr(x,c) memset(x, c, sizeof(x)) typedef pair Pii; typedef long long ll; typedef unsigned long long ull; #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define lowbit(x) (x&-x) #define l(x) Left[x] #define r(x) Right[x] inline int read() { int x=0, f=1; char ch=getchar(); while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} while ('0'<=ch && ch<='9') x=x*10+ch-'0', ch=getchar(); return x*f; } int n, now, k[29], c[8]; ll tmp, A, B; bool d[29], g[29]; int pri[8]={2,3,5,7,11,13,17,19}; inline void nx(int &x){x++; if (x>n) x-=n; while (d[x]) {x++; if (x>n) x-=n;}} inline void G(int x) { rep(i, 0, 7) if (x%pri[i]==0) { int now=0; while (x%pri[i]==0) x/=pri[i], now++; while (now>c[i]) c[i]++, B*=pri[i]; } } int main() { int t=read(); while (t--) { n=read(); now=n; A=0, B=1; clr(d,0); clr(c,0); rep(i, 1, n) k[read()]=i; dow(i, n, 1) { int o=1; nx(now); while (now!=k[n-i+1]) o++, nx(now); d[now]=1; o%=i; clr(g,0); tmp=A%i; while (tmp!=o) { if (g[tmp]) {A=-1; break;} g[tmp]=1; A+=B; (tmp+=B)%=i; } if (A==-1) break; G(i); } if (A==0) A+=B; if (A==-1) puts("Creation August is a SB!"); else printf("%llu\n", A); } return 0; }