#include<iostream>
#include<string>
#include<vector>
#include<cmath>

#include "twins.h"

using namespace std;

const bool DETAILS=true;

int _n,_m,_t,_pos[4];
bool _special[50007];
int _vis[50007],_tim;
string _result;
int _L,_P;

vector<int> _ans;

void prnt(const char message[]){
    cout<<message<<"\n";
    exit(0);
}

string guess(vector< vector<int> >& questions){

    if(DETAILS){
        cout<<"Guess number "<<_P+1<<"\n";
        for(int i=0;i<questions.size();i++){
            cout<<"Question number "<<i+1<<" : ";
            for(int f=0;f<questions[i].size();f++){
                cout<<questions[i][f]<<" ";
            }
            cout<<"\n";
        }
    }

    _m=questions.size();
    _L+=int(questions.size());
    _P++;

    if(_m==0)prnt("Empty question!");

    _result.clear();
    _result.resize(_m);

    for(int i=0;i<_m;i++){
        if(questions[i].size()==0){
            _L--;
        }

        _result[i]='0'; _tim++;
        for(int f=0;f<questions[i].size();f++){
            if(questions[i][f]<1 or questions[i][f]>_n)prnt("Invalid question!");

            if(_vis[questions[i][f]]==_tim)prnt("Invalid question!");
            _vis[questions[i][f]]=_tim;

            if(_special[questions[i][f]])_result[i]='1';
        }
    }

    if(DETAILS){
        cout<<"Results from guess number "<<_P<<" : "<<_result<<"\n";
    }

    return _result;
}

int main(){

    cout<<"N: ";
    cin>>_n;
    cout<<"T: ";
    cin>>_t;

    cout<<"Pictures of Reni :";
    for(int i=1;i<=_t;i++){
        cin>>_pos[i];
        _special[_pos[i]]=true;
    }

    _ans=play(_n,_t);
    if(DETAILS){
        cout<<"Returned pcitures : "<<_ans[0];
        if(_ans.size()>1)cout<<" "<<_ans[1];
        cout<<"\n";
    }

    if(_t==1 and _ans.size()!=1)prnt("Wrong answer size!");
    if(_t==1 and (_ans[0]<1 or _ans[0]>_n))prnt("Invalid index!");
    if(_t==1 and !_special[_ans[0]])prnt("Wrong answer!");

    if(_t==2 and _ans.size()!=2)prnt("Wrong answer size!");
    if(_t==2 and (_ans[0]<1 or _ans[0]>_n))prnt("Invalid index!");
    if(_t==2 and (_ans[1]<1 or _ans[1]>_n))prnt("Invalid index!");
    if(_t==2 and _ans[0]==_ans[1])prnt("Wrong answer!");
    if(_t==2 and (!_special[_ans[0]] or !_special[_ans[1]]))prnt("Wrong answer!");

    cout<<"Correct with "<<_P<<" guesses and "<<_L<<" questions!\n";

    return 0;
}
