#include #include #define REP(i,N) for(int i = 0; i<(N); ++i) using namespace std; typedef long long T; typedef long long LL; T INF = 1000000000LL * 1000000000LL; T GCD(T a, T b) { return b?GCD(b,a%b):a;} T eGCD(T a, T b, T &x, T &y) { if(!b){ x = 1, y = 0; return a; } T d = eGCD(b,a%b, y,x); y = a - x*(a/b)-y; x = b-x; return d; } T inverse(T a, T p) { T x,y; eGCD(a%p+p,p,x,y); return x % p; } bool crt_error = false; T CRT(T a, T m, T b, T n) { b = (b+n-(a%n))%n; T d = GCD(m,n); if((b%d) != 0) { crt_error = true; return 0; } T old_m = m; m /= d; b /= d; n /= d; return ((b*inverse(m,n))%n)*old_m + a; } LL lcm(T a, T b) { T d = GCD(a,b); return a/d*b; } bool scase() { int N; scanf("%d",&N); if(!N) return false; int next[5*N]; REP(k,N) { next[2*k] = 5*k; next[2*k+1] = 5*k+1; next[2*N+2*k] = 5*k + 2; next[2*N+2*k+1] = 5*k + 3; next[4*N + k] = 5*k+4; } int perm[5*N]; REP(i,5*N) { scanf("%d",&perm[i]); perm[i]--; } int poz[5*N]; REP(i,5*N) poz[perm[i]] = i; T res[N]; T M[5]; vector V[N][5]; REP(i,5) { int k = poz[i]; int r = 0; do { V[k/5][i].push_back(r); r++; k = next[k]; } while( k != poz[i]); M[i] = r; } LL resu[5], modu[5]; REP(player,N) { res[player] = INF; bool any = true; REP(i,5) any &= (V[player][i].size()); if(!any) continue; int W[5]; REP(i,5) W[i] = 0; int u = 0; while(true) { if (u == 0) { resu[0] = V[player][0][W[u]]; modu[0] = M[0]; u = 1; } while(u<5) { modu[u] = lcm(modu[u-1], M[u]); resu[u] = CRT(resu[u-1], modu[u-1], V[player][u][W[u]], M[u]); if (crt_error) { for(int i = u+1; i<5; i++) W[i] = V[player][i].size() - 1; crt_error = false; goto fail; } u++; } if(resu[4] == 0) resu[4] = modu[4]; res[player] = min(res[player], resu[4]); fail: u = 4; while (u >= 0 && W[u] == V[player][u].size()-1) { W[u] = 0; u--; } W[u]++; if (u < 0) break; } } int minpl = -1; LL minres = INF; REP(player,N) { if(res[player] < minres) { minres = res[player]; minpl = player; } } if (minres == INF) { printf("Neverending game.\n"); } else { printf("Player %d wins game number %lld.\n", minpl+1, minres); } return true; } int main() { while(scase()); return 0; }