#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define freopen(name) if(fopen(name".INP","r")) {freopen (name".INP","r",stdin); freopen (name".OUT","w",stdout);}
#define fir first
#define sec second
#define str string
const int Max_n=45;
const ll mod=1e9+7;
vector < int > res ;
#define pb push_back
int n ;
vector < int > judge [Max_n+3 ];
int median ( int i ){
vector < int > c = judge[i] ;
#define ALL(x) (x).begin() , (x).end()
sort ( ALL ( c ) ) ;
if ( c.size()&1 ) {
return c[(c.size() >> 1) ] ;
}
else {
return ( c[(c.size() >> 1) - 1 ] + c[c.size() / 2 ] ) / 2;
}
}
void So ( int k ){
if ( k == 2 * n + 1 ) {
return ;
}
if ( judge[k].empty()) return ;
if ( k & 1 ){
int BASE = median ( k ) ;
for (auto x : judge[k]) {
if ( x > BASE) {
res.pb ( k ) ;
judge[k+1].pb ( x ) ;
// res.pb ( k + 1 );
}
else {
res.pb ( k ) ;
res.pb (k +1 );
judge[k+2].pb ( x ) ;
// judge[k+2].pb ( x ) ;
}
}
judge[k].clear() ;
So ( k + 2 ) ;
So ( k + 1 ) ;
}
else {
// cout << k << ' ';
for (int i = judge[k].size() - 1 ; i >= 0 ; i -- ) {
int x = judge[k][i] ;
res.pb ( k ) ;
judge[k+1].pb( x ) ;
}
judge[k].clear() ;
So ( k + 1 );
}
}
int main(){
freopen("");
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n ;
int k ; cin >> k ;
for (int i= 1 ; i <= k ;i ++ ){
int x ; cin >> x ;
judge[1].push_back ( x );
}
So ( 1 ) ;
cout << res.size() << '\n' ;
for (auto x : res) cout << x << ' ';
return 0;
}//111111111111111111111111
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZnJlb3BlbihuYW1lKSBpZihmb3BlbihuYW1lIi5JTlAiLCJyIikpIHtmcmVvcGVuIChuYW1lIi5JTlAiLCJyIixzdGRpbik7IGZyZW9wZW4gKG5hbWUiLk9VVCIsInciLHN0ZG91dCk7fQojZGVmaW5lIGZpciBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBzdHIgc3RyaW5nCmNvbnN0IGludCBNYXhfbj00NTsKY29uc3QgbGwgbW9kPTFlOSs3Owp2ZWN0b3IgPCBpbnQgPiByZXMgOwojZGVmaW5lIHBiIHB1c2hfYmFjayAKaW50IG4gOyAKdmVjdG9yIDwgaW50ID4ganVkZ2UgW01heF9uKzMgXTsKCmludCBtZWRpYW4gKCBpbnQgaSApewoJdmVjdG9yIDwgaW50ID4gYyA9IGp1ZGdlW2ldIDsKCSNkZWZpbmUgQUxMKHgpICh4KS5iZWdpbigpICwgKHgpLmVuZCgpCSAKCXNvcnQgKCBBTEwgKCBjICkgKSAgOwoJaWYgKCBjLnNpemUoKSYxICkgewoJCXJldHVybiBjWyhjLnNpemUoKSA+PiAxKSBdIDsKCX0gCgllbHNlIHsKCQlyZXR1cm4gKCBjWyhjLnNpemUoKSA+PiAxKSAtIDEgXSArIGNbYy5zaXplKCkgLyAyIF0gKSAvIDI7Cgl9Cn0Kdm9pZCBTbyAoIGludCBrICl7CglpZiAoIGsgPT0gMiAqIG4gKyAxICkgewoJCXJldHVybiA7Cgl9CglpZiAoIGp1ZGdlW2tdLmVtcHR5KCkpIHJldHVybiA7CglpZiAoIGsgJiAxICl7CgkJaW50IEJBU0UgPSBtZWRpYW4gKCBrICkgOwoKCQlmb3IgKGF1dG8geCA6IGp1ZGdlW2tdKSB7CgkJCWlmICggeCA+IEJBU0UpIHsKCQkJCXJlcy5wYiAoIGsgKSA7CgkJCQlqdWRnZVtrKzFdLnBiICggeCApIDsKCQkJCS8vIHJlcy5wYiAoIGsgKyAxICk7CgoJCQl9CgkJCWVsc2UgewoJCQkJcmVzLnBiICggayApIDsKCQkJCXJlcy5wYiAoayArMSAgKTsKCgkJCQlqdWRnZVtrKzJdLnBiICggeCApIDsKCQkJCS8vIGp1ZGdlW2srMl0ucGIgKCB4ICkgOwoJCQl9CgkJfQoJCWp1ZGdlW2tdLmNsZWFyKCkgOwoJCVNvICggayArIDIgKSA7CgkJU28gKCBrICsgMSApIDsKCX0KCWVsc2UgewoJCS8vIGNvdXQgPDwgayA8PCAnICc7CgkJZm9yIChpbnQgaSA9IGp1ZGdlW2tdLnNpemUoKSAtIDEgOyBpID49IDAgOyBpIC0tICkgewoJCQkJaW50IHggPSBqdWRnZVtrXVtpXSA7CgkJCQlyZXMucGIgKCBrICkgOwoJCQkJanVkZ2VbaysxXS5wYiggeCApIDsKCQl9CgkJanVkZ2Vba10uY2xlYXIoKSA7CgkJU28gKCBrICsgMSApOwoKCX0KfQppbnQgbWFpbigpewogICAgZnJlb3BlbigiIik7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBjaW4gPj4gbiA7CiAgICBpbnQgayA7IGNpbiA+PiBrIDsKICAgIGZvciAoaW50IGk9IDEgOyBpIDw9IGsgO2kgKysgICl7CiAgICAJaW50IHggOyBjaW4gPj4geCA7CiAgICAJanVkZ2VbMV0ucHVzaF9iYWNrICggeCApOyAKICAgIH0KICAgIFNvICggMSApIDsKICAgIGNvdXQgPDwgcmVzLnNpemUoKSA8PCAnXG4nIDsKICAgIGZvciAoYXV0byB4IDogcmVzKSBjb3V0IDw8IHggPDwgJyAnOyAKICAgIHJldHVybiAwOwp9Ly8xMTExMTExMTExMTExMTExMTExMTExMTEK