#include using namespace std; const string one(29, '1'); string to_str(int num) { if(num == 1) return one; string ret = ""; while(num) { ret.push_back('0' + (num&1)); num >>= 1; } ret.pop_back(); reverse(ret.begin(), ret.end()); return ret; } int to_num(const string& s) { if(s == one) return 1; int ret = 1; for(char c : s) { ret <<= 1; ret += c - '0'; } return ret; } vector get_permutation_at(int N, int k) { vector res(N); iota(res.begin(), res.end(), 1); k--; for(int i = 0; i < k; i++) next_permutation(res.begin(), res.end()); return res; } int get_permutation_index(vector p) { int res = 0; do { res++; } while (prev_permutation(p.begin(), p.end())); return res; } void Alice() { int N, Q; cin >> N >> Q; vector A(N); for(auto& a : A) cin >> a; vector S(min(N, 13)); for(int i = 0; i < min(N, 13); i++) { S[i] = to_str(A[i]); } if(N == 14) { auto perm = get_permutation_at(N-1, A[N-1]); vector nS(N-1); for(int i = 0; i < N-1; i++) nS[i] = S[perm[i]-1]; S.swap(nS); } cout << S.size() << endl; for(auto& s : S) cout << s << endl; return; } void Bob() { int N, Q; cin >> N >> Q; int K; cin >> K; vector S(K); for(auto& s : S) cin >> s; vector A(N); for(int i = 0; i < min(N, 13); i++) A[i] = to_num(S[i]); if(N == 14) { vector I(K), perm(K); iota(I.begin(), I.end(), 0); sort(I.begin(), I.end(), [&](int i, int j){ return A[i] < A[j]; }); for(int i = 0; i < K; i++) perm[I[i]] = i + 1; A[N-1] = get_permutation_index(perm); } sort(A.begin(), A.end()); for(int i = 0; i < N; i++) cout << A[i] << (i < N-1 ? " " : "\n"); cout << flush; return; } int main() { string player; cin >> player; if(player == "Alice") Alice(); else Bob(); }