#include #include using namespace std; int vizsgal(vector &v, unsigned long long game) { for (unsigned int i=0;i < v.size();i+= 5) { if (v[i] == 1 && v[i+1] == 1 && v[i+2] == 1 && v[i+3] == 1 && v[i+4] == 1 ) { cout << "Player " << i/5 + 1 << " wins the game number " << game - 1 << ".\n"; return 1; } } return 0; } int osztas(unsigned int N, unsigned int k) { if (k >= 0 && k <= 2*N-1) { k = 5*(k/2) + k % 2 ; return k;} if (k >= 2*N && k <= 4*N-1) { k = 5* ((k-2*N)/2)+ k % 2 +2; return k;} if (k >= 4*N && k <= 5*N-1) k = (k- (4 * N))*5 + 4; return k; } bool checkstate(vector &states, vector &v) { for (unsigned int i=0;i<1;i++) { bool egyezik = true; for (unsigned int j=0;j< v.size();j++) if (states[j] != v[j]) {egyezik = false; } if (egyezik == true) { cout << "Neverending game." << endl; return true; } } return false; } int app(istream &f) { unsigned int N; unsigned int in; unsigned long long current = 0; for (;;) { f >> N; if (N == 0) return 0; vector v(5*N,0); vector temp(5*N,0); vector states; current = 0; vector ures(5*N,0); for (unsigned int i=0;i<5*N;i++) { f >> in; if (in > 0 && in < 6) v[i] = 1; } states = v; while (true) { current++; temp = ures; if (checkstate(states,v)) break; if (vizsgal(v,current)) break; for (unsigned int j=0; j < v.size();j++) { if (v[j] == 1) temp[osztas(N,j)] = 1; } v = temp; } } return 0; } int main() { app(cin); return 0; }