#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pb push_back
#define all(v) v.begin(),v.end()
#define mk make_pair
typedef pair<int,int> pii;
const int maxn=1e6,MOD=1e9+7,INF=1e18;
int a[maxn],b[maxn];
vector<int> adj[maxn];
int32_t main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n,k;
cin >> n >> k;
for(int i=1;i<=k;i++){
cin >> b[i];
}
for(int i=0;i<=n;i++){
adj[i].pb(i);
a[i] = i;
}
int l=0,r=n;
for(int i=1;i<=k;i++){
if((a[b[i]]-l) <= (r-a[b[i]])){
int d = 1;
for(int j=a[b[i]]-1;j>=l;j--){
for(int u : adj[j]){
adj[a[b[i]]+d].pb(u);
a[u] = a[b[i]] + d;
}
adj[j].clear();
d++;
}
l = a[b[i]];
}else{
int d = 1;
for(int j=a[b[i]]+1;j<=r;j++){
for(int u : adj[j]){
adj[a[b[i]]-d].pb(u);
a[u] = a[b[i]] - d;
}
adj[j].clear();
d++;
}
r = a[b[i]];
}
}
vector<int> ans;
for(int i=0;i<=n;i++){
if(!adj[i].empty()){
ans.pb((int)adj[i].size());
}
}
cout << (int)ans.size() << '\n';
for(int u : ans) cout << u << " ";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcgCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBtayBtYWtlX3BhaXIKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpaTsKY29uc3QgaW50IG1heG49MWU2LE1PRD0xZTkrNyxJTkY9MWUxODsKaW50IGFbbWF4bl0sYlttYXhuXTsKdmVjdG9yPGludD4gYWRqW21heG5dOwppbnQzMl90IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBpbnQgbixrOwogICAgY2luID4+IG4gPj4gazsKICAgIGZvcihpbnQgaT0xO2k8PWs7aSsrKXsKICAgICAgICBjaW4gPj4gYltpXTsKICAgIH0KICAgIGZvcihpbnQgaT0wO2k8PW47aSsrKXsKICAgICAgICBhZGpbaV0ucGIoaSk7CiAgICAgICAgYVtpXSA9IGk7CiAgICB9CiAgICBpbnQgbD0wLHI9bjsKICAgIGZvcihpbnQgaT0xO2k8PWs7aSsrKXsKICAgICAgICBpZigoYVtiW2ldXS1sKSA8PSAoci1hW2JbaV1dKSl7CiAgICAgICAgICAgIGludCBkID0gMTsKICAgICAgICAgICAgZm9yKGludCBqPWFbYltpXV0tMTtqPj1sO2otLSl7CiAgICAgICAgICAgICAgICBmb3IoaW50IHUgOiBhZGpbal0pewogICAgICAgICAgICAgICAgICAgIGFkalthW2JbaV1dK2RdLnBiKHUpOwogICAgICAgICAgICAgICAgICAgIGFbdV0gPSBhW2JbaV1dICsgZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFkaltqXS5jbGVhcigpOwogICAgICAgICAgICAgICAgZCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGwgPSBhW2JbaV1dOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBpbnQgZCA9IDE7CiAgICAgICAgICAgIGZvcihpbnQgaj1hW2JbaV1dKzE7ajw9cjtqKyspewogICAgICAgICAgICAgICAgZm9yKGludCB1IDogYWRqW2pdKXsKICAgICAgICAgICAgICAgICAgICBhZGpbYVtiW2ldXS1kXS5wYih1KTsKICAgICAgICAgICAgICAgICAgICBhW3VdID0gYVtiW2ldXSAtIGQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGpbal0uY2xlYXIoKTsKICAgICAgICAgICAgICAgIGQrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICByID0gYVtiW2ldXTsKICAgICAgICB9CiAgICB9CiAgICB2ZWN0b3I8aW50PiBhbnM7CiAgICBmb3IoaW50IGk9MDtpPD1uO2krKyl7CiAgICAgICAgaWYoIWFkaltpXS5lbXB0eSgpKXsKICAgICAgICAgICAgYW5zLnBiKChpbnQpYWRqW2ldLnNpemUoKSk7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCAoaW50KWFucy5zaXplKCkgPDwgJ1xuJzsKICAgIGZvcihpbnQgdSA6IGFucykgY291dCA8PCB1IDw8ICIgIjsKICAgIHJldHVybiAwOwp9