/// no time to waste
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define eb emplace_back
#define ef emplace_front
#define pii pair <int, int>
#define pli pair <ll, int>
#define pll pair <ll, ll>
#define pci pair <char, int>
#define pil pair <int, ll>
#define pic pair <int, char>
#define fi first
#define se second
#define all(ac) ac.begin(), ac.end()
#define MASK(x) (1 << (x))
#define ub(i, j) ((i >> j) & 1)
#define FBIT(x) (MASK(x) - 1)
#define FLIP(x, y) (FBIT(x) ^ y)
#define bit_count(x) (int) (__builtin_popcount(x))
#define bit_countll(x) (int) (__builtin_popcountll(x))
#define ii make_pair
#define int128 __int128_t
#define SZ(x) ((int) x.size())
#define multi 0
const int MX = 1002;
int n, k;
int winner[MX][MX];
bool mimeo = 0;
int ask(int x, int y) {
if(!winner[x][y]) {
cout << "? " << x << ' ' << y << endl;
cin >> winner[x][y], winner[y][x] = winner[x][y];
}
return winner[x][y];
}
struct segtree {
int n;
vector <int> tree;
segtree(int n = 0): n(n), tree(n << 2 | 1, 0) {}
int Merge(int x, int y) {
if(!x || !y) return x + y;
int t = ask(x, y);
if(!mimeo) return t;
return t == x ? y : x;
}
void Build(int id, int l, int r) {
if(l == r) return void(tree[id] = l);
int mid = (l + r) >> 1;
Build(id << 1, l, mid);
Build(id << 1 | 1, mid + 1, r);
tree[id] = Merge(tree[id << 1], tree[id << 1 | 1]);
return;
}
void update(int id, int l, int r, int pos) {
if(l > pos || r < pos) return;
if(l == r) return void(tree[id] = 0);
int mid = (l + r) >> 1;
update(id << 1, l, mid, pos);
update(id << 1 | 1, mid + 1, r, pos);
tree[id] = Merge(tree[id << 1], tree[id << 1 | 1]);
return;
}
void Build() {
return Build(1, 1, n), void();
}
void update(int pos) {
return update(1, 1, n, pos), void();
}
} smt;
void solve() {
cin >> n >> k;
if(k == n) {
cout << "! 1 1" << endl;
for(int i = 1; i <= n; i++) cout << i << ' ';
return;
}
if(k == 1) {
int res = 1;
for(int i = 2; i <= n; i++) res = ask(res, i);
cout << "! 1 1" << endl;
cout << res;
return;
}
if(k > n - k) {
k = n - k;
mimeo = 1;
}
if(k > 40) {
vector <int> a(n);
iota(all(a), 1);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
shuffle(all(a), rng);
auto cmp = [&] (const int &x, const int &y) -> bool {
if(x == y) return 0;
return ask(x, y) == x && !mimeo || ask(x, y) == y && mimeo;
};
nth_element(a.begin(), a.begin() + k, a.end(), cmp);
cout << "! 1 1" << endl;
if(!mimeo) {
for(int i = 0; i < k; i++) cout << a[i] << ' ';
}
else {
for(int i = k; i < n; i++) cout << a[i] << ' ';
}
return;
}
smt = segtree(n);
smt.Build();
vector <int> res;
for(int i = 1; i <= k; i++) {
res.eb(smt.tree[1]);
if(i < k) smt.update(res.back());
}
cout << "! 1 1" << endl;
if(mimeo) {
vector <bool> vis(n + 1, 0);
for(int &i : res) vis[i] = 1;
for(int i = 1; i <= n; i++) if(!vis[i]) {
cout << i << ' ';
}
}
else {
for(int &i : res) cout << i << ' ';
}
return;
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
#define task "tet"
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int testcase = multi == 2 ? 1e9 : 1; if(multi == 1) cin >> testcase;
while(testcase--) solve();
return 0;
}
Ly8vIG5vIHRpbWUgdG8gd2FzdGUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBlZiBlbXBsYWNlX2Zyb250CiNkZWZpbmUgcGlpIHBhaXIgPGludCwgaW50PgojZGVmaW5lIHBsaSBwYWlyIDxsbCwgaW50PgojZGVmaW5lIHBsbCBwYWlyIDxsbCwgbGw+CiNkZWZpbmUgcGNpIHBhaXIgPGNoYXIsIGludD4KI2RlZmluZSBwaWwgcGFpciA8aW50LCBsbD4KI2RlZmluZSBwaWMgcGFpciA8aW50LCBjaGFyPgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKGFjKSBhYy5iZWdpbigpLCBhYy5lbmQoKQojZGVmaW5lIE1BU0soeCkgKDEgPDwgKHgpKQojZGVmaW5lIHViKGksIGopICgoaSA+PiBqKSAmIDEpCiNkZWZpbmUgRkJJVCh4KSAoTUFTSyh4KSAtIDEpCiNkZWZpbmUgRkxJUCh4LCB5KSAoRkJJVCh4KSBeIHkpCiNkZWZpbmUgYml0X2NvdW50KHgpIChpbnQpIChfX2J1aWx0aW5fcG9wY291bnQoeCkpCiNkZWZpbmUgYml0X2NvdW50bGwoeCkgKGludCkgKF9fYnVpbHRpbl9wb3Bjb3VudGxsKHgpKQojZGVmaW5lIGlpIG1ha2VfcGFpcgojZGVmaW5lIGludDEyOCBfX2ludDEyOF90CiNkZWZpbmUgU1ooeCkgKChpbnQpIHguc2l6ZSgpKQojZGVmaW5lIG11bHRpIDAKCmNvbnN0IGludCBNWCA9IDEwMDI7CmludCBuLCBrOwppbnQgd2lubmVyW01YXVtNWF07Cgpib29sIG1pbWVvID0gMDsKCmludCBhc2soaW50IHgsIGludCB5KSB7CiAgICBpZighd2lubmVyW3hdW3ldKSB7CiAgICAgICAgY291dCA8PCAiPyAiIDw8IHggPDwgJyAnIDw8IHkgPDwgZW5kbDsKICAgICAgICBjaW4gPj4gd2lubmVyW3hdW3ldLCB3aW5uZXJbeV1beF0gPSB3aW5uZXJbeF1beV07CiAgICB9CiAgICByZXR1cm4gd2lubmVyW3hdW3ldOwp9CgpzdHJ1Y3Qgc2VndHJlZSB7CiAgICBpbnQgbjsKICAgIHZlY3RvciA8aW50PiB0cmVlOwoKICAgIHNlZ3RyZWUoaW50IG4gPSAwKTogbihuKSwgdHJlZShuIDw8IDIgfCAxLCAwKSB7fQoKICAgIGludCBNZXJnZShpbnQgeCwgaW50IHkpIHsKICAgICAgICBpZigheCB8fCAheSkgcmV0dXJuIHggKyB5OwogICAgICAgIAogICAgICAgIGludCB0ID0gYXNrKHgsIHkpOwogICAgICAgIGlmKCFtaW1lbykgcmV0dXJuIHQ7CiAgICAgICAgcmV0dXJuIHQgPT0geCA/IHkgOiB4OwogICAgfQoKICAgIHZvaWQgQnVpbGQoaW50IGlkLCBpbnQgbCwgaW50IHIpIHsKICAgICAgICBpZihsID09IHIpIHJldHVybiB2b2lkKHRyZWVbaWRdID0gbCk7CgogICAgICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICAgICAgCiAgICAgICAgQnVpbGQoaWQgPDwgMSwgbCwgbWlkKTsKICAgICAgICBCdWlsZChpZCA8PCAxIHwgMSwgbWlkICsgMSwgcik7CgogICAgICAgIHRyZWVbaWRdID0gTWVyZ2UodHJlZVtpZCA8PCAxXSwgdHJlZVtpZCA8PCAxIHwgMV0pOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHBvcykgewogICAgICAgIGlmKGwgPiBwb3MgfHwgciA8IHBvcykgcmV0dXJuOwogICAgICAgIGlmKGwgPT0gcikgcmV0dXJuIHZvaWQodHJlZVtpZF0gPSAwKTsKCiAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKCiAgICAgICAgdXBkYXRlKGlkIDw8IDEsIGwsIG1pZCwgcG9zKTsKICAgICAgICB1cGRhdGUoaWQgPDwgMSB8IDEsIG1pZCArIDEsIHIsIHBvcyk7CgogICAgICAgIHRyZWVbaWRdID0gTWVyZ2UodHJlZVtpZCA8PCAxXSwgdHJlZVtpZCA8PCAxIHwgMV0pOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2b2lkIEJ1aWxkKCkgewogICAgICAgIHJldHVybiBCdWlsZCgxLCAxLCBuKSwgdm9pZCgpOwogICAgfQoKICAgIHZvaWQgdXBkYXRlKGludCBwb3MpIHsKICAgICAgICByZXR1cm4gdXBkYXRlKDEsIDEsIG4sIHBvcyksIHZvaWQoKTsKICAgIH0KfSBzbXQ7Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gazsKCiAgICBpZihrID09IG4pIHsKICAgICAgICBjb3V0IDw8ICIhIDEgMSIgPDwgZW5kbDsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY291dCA8PCBpIDw8ICcgJzsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAgIGlmKGsgPT0gMSkgewogICAgICAgIGludCByZXMgPSAxOwogICAgICAgIGZvcihpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSByZXMgPSBhc2socmVzLCBpKTsKICAgICAgICBjb3V0IDw8ICIhIDEgMSIgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8IHJlczsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYoayA+IG4gLSBrKSB7CiAgICAgICAgayA9IG4gLSBrOwogICAgICAgIG1pbWVvID0gMTsKICAgIH0KCiAgICBpZihrID4gNDApIHsKICAgICAgICB2ZWN0b3IgPGludD4gYShuKTsKICAgICAgICBpb3RhKGFsbChhKSwgMSk7CgogICAgICAgIG10MTk5Mzcgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CiAgICAgICAgc2h1ZmZsZShhbGwoYSksIHJuZyk7CgogICAgICAgIGF1dG8gY21wID0gWyZdIChjb25zdCBpbnQgJngsIGNvbnN0IGludCAmeSkgLT4gYm9vbCB7CiAgICAgICAgICAgIGlmKHggPT0geSkgcmV0dXJuIDA7CiAgICAgICAgICAgIHJldHVybiBhc2soeCwgeSkgPT0geCAmJiAhbWltZW8gfHwgYXNrKHgsIHkpID09IHkgJiYgbWltZW87CiAgICAgICAgfTsKCiAgICAgICAgbnRoX2VsZW1lbnQoYS5iZWdpbigpLCBhLmJlZ2luKCkgKyBrLCBhLmVuZCgpLCBjbXApOwoKICAgICAgICBjb3V0IDw8ICIhIDEgMSIgPDwgZW5kbDsKICAgICAgICAKICAgICAgICBpZighbWltZW8pIHsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGs7IGkrKykgY291dCA8PCBhW2ldIDw8ICcgJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IGs7IGkgPCBuOyBpKyspIGNvdXQgPDwgYVtpXSA8PCAnICc7ICAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAgIHNtdCA9IHNlZ3RyZWUobik7CiAgICBzbXQuQnVpbGQoKTsKCiAgICB2ZWN0b3IgPGludD4gcmVzOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBrOyBpKyspIHsKICAgICAgICByZXMuZWIoc210LnRyZWVbMV0pOwogICAgICAgIGlmKGkgPCBrKSBzbXQudXBkYXRlKHJlcy5iYWNrKCkpOwogICAgfQoKICAgIGNvdXQgPDwgIiEgMSAxIiA8PCBlbmRsOwogICAgCiAgICBpZihtaW1lbykgewogICAgICAgIHZlY3RvciA8Ym9vbD4gdmlzKG4gKyAxLCAwKTsKICAgICAgICBmb3IoaW50ICZpIDogcmVzKSB2aXNbaV0gPSAxOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBpZighdmlzW2ldKSB7CiAgICAgICAgICAgIGNvdXQgPDwgaSA8PCAnICc7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yKGludCAmaSA6IHJlcykgY291dCA8PCBpIDw8ICcgJzsKICAgIH0KICAgIHJldHVybjsKfQoKaW50MzJfdCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKSwgY291dC50aWUoMCk7CiAgICAjZGVmaW5lIHRhc2sgInRldCIKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGludCB0ZXN0Y2FzZSA9IG11bHRpID09IDIgPyAxZTkgOiAxOyBpZihtdWx0aSA9PSAxKSBjaW4gPj4gdGVzdGNhc2U7CiAgICB3aGlsZSh0ZXN0Y2FzZS0tKSBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K