import os from itertools import combinations import random import copy n = int(input()) x = list(range(1,n+1)) def check(x, ch): if ch is not None: x.remove(ch) print(f'? {len(x)}') print(' '.join(map(str, x))) result = input() if result == '1': return True else: return False buff = set() def trier(x): if len(buff) == n: return None for ch in copy.copy(x): if ch not in buff: '''チェック''' if check(copy.copy(x), ch): x.remove(ch) buff.add(ch) else: buff.add(ch) ans = None if check(x, None): ans = x while True: ret = trier(x) if ret is None: ans = x break print(f'! {len(ans)}') print(' '.join(map(str,ans)))