#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; template istream& operator >> (istream& is, vector& vec){for(T& val: vec) is >> val; return is;} template istream& operator , (istream& is, T& val){ return is >> val;} template ostream& operator << (ostream& os, const vector& vec){for(int i=0; i ostream& operator , (ostream& os, const T& val){ return os << " " << val;} template ostream& operator >> (ostream& os, const T& val){ return os << " " << val;} int main(){ vector n = {0,1,2,3}; set s; for(int i=0; i<10; i++){ n = {i, (i+1)%10, (i+2)%10, (i+3)%10}; int a,b; cout << n << endl; cin >> a,b; if(a==4 && b==0) return 0; for(int k=4; k<10; k++){ n[0] = (i+k)%10; int c,d; cout << n << endl; cin >> c,d; if(c==4 && d==0) return 0; if(a+b > c+d){ s.insert(i); break; } } } n = vector(s.begin(), s.end()); do{ cout << n << endl; int a,b; cin >> a >> b; if(a==4 && b==0){ return 0; } }while(next_permutation(n.begin(), n.end())); abort(); return 0; }