#include <bits/stdc++.h>   using namespace std;   vector<long long int> vec;   map<int, int> mp;   multiset<long long int> st;   long long int n, m;   string s, s1, s2;   int arr[] = {4, 8, 15, 16, 23, 42};   int main() {     long long int i, j, k, c = INT_MAX, ans = 0, t, z, x, y;     for (i = 0; i < 6; i++) mp[arr[i]] = 0;     cout <<  ?   << 1 <<     << 2 << endl;     fflush(stdout);     cin >> z;     for (i = 0; i < 6; i++) {       if (z % arr[i] == 0) {         y = z / arr[i];         for (j = i + 1; j < 6; j++) {           if (y == arr[j]) {             vec.push_back(z);             mp[arr[i]]++;             mp[arr[j]]++;             ans = 1;             break;           }         }         if (ans == 1) break;       }     }     ans = 0;     cout <<  ?   << 1 <<     << 3 << endl;     fflush(stdout);     cin >> z;     for (i = 0; i < 6; i++) {       if (z % arr[i] == 0) {         y = z / arr[i];         for (j = i + 1; j < 6; j++) {           if (y == arr[j]) {             vec.push_back(z);             mp[arr[i]]++;             mp[arr[j]]++;             ans = 1;             break;           }         }         if (ans == 1) break;       }     }     ans = 0;     cout <<  ?   << 1 <<     << 4 << endl;     fflush(stdout);     cin >> z;     for (i = 0; i < 6; i++) {       if (z % arr[i] == 0) {         y = z / arr[i];         for (j = i + 1; j < 6; j++) {           if (y == arr[j]) {             vec.push_back(z);             mp[arr[i]]++;             mp[arr[j]]++;             ans = 1;             break;           }         }         if (ans == 1) break;       }     }     ans = 0;     cout <<  ?   << 1 <<     << 5 << endl;     fflush(stdout);     cin >> z;     for (i = 0; i < 6; i++) {       if (z % arr[i] == 0) {         y = z / arr[i];         for (j = i + 1; j < 6; j++) {           if (y == arr[j]) {             vec.push_back(z);             mp[arr[i]]++;             mp[arr[j]]++;             ans = 1;             break;           }         }         if (ans == 1) break;       }     }     cout <<  !  ;     if (mp[4] == 4) {       cout << 4 <<    ;       cout << vec[0] / 4 <<    ;       cout << vec[1] / 4 <<    ;       cout << vec[2] / 4 <<    ;       cout << vec[3] / 4 <<    ;       for (i = 0; i < 6; i++) {         if (mp[arr[i]] == 0) {           cout << arr[i];           return 0;         }       }     } else if (mp[8] == 4) {       cout << 8 <<    ;       cout << vec[0] / 8 <<    ;       cout << vec[1] / 8 <<    ;       cout << vec[2] / 8 <<    ;       cout << vec[3] / 8 <<    ;       for (i = 0; i < 6; i++) {         if (mp[arr[i]] == 0) {           cout << arr[i];           return 0;         }       }     } else if (mp[15] == 4) {       cout << 15 <<    ;       cout << vec[0] / 15 <<    ;       cout << vec[1] / 15 <<    ;       cout << vec[2] / 15 <<    ;       cout << vec[3] / 15 <<    ;       for (i = 0; i < 6; i++) {         if (mp[arr[i]] == 0) {           cout << arr[i];           return 0;         }       }     } else if (mp[16] == 4) {       cout << 16 <<    ;       cout << vec[0] / 16 <<    ;       cout << vec[1] / 16 <<    ;       cout << vec[2] / 16 <<    ;       cout << vec[3] / 16 <<    ;       for (i = 0; i < 6; i++) {         if (mp[arr[i]] == 0) {           cout << arr[i];           return 0;         }       }     } else if (mp[23] == 4) {       cout << 23 <<    ;       cout << vec[0] / 23 <<    ;       cout << vec[1] / 23 <<    ;       cout << vec[2] / 23 <<    ;       cout << vec[3] / 23 <<    ;       for (i = 0; i < 6; i++) {         if (mp[arr[i]] == 0) {           cout << arr[i];           return 0;         }       }     } else if (mp[42] == 4) {       cout << 42 <<    ;       cout << vec[0] / 42 <<    ;       cout << vec[1] / 42 <<    ;       cout << vec[2] / 42 <<    ;       cout << vec[3] / 42 <<    ;       for (i = 0; i < 6; i++) {         if (mp[arr[i]] == 0) {           cout << arr[i];           return 0;         }       }     }   }