#include <bits/stdc++.h>
using namespace std;
int n, a;
stack<int> q;
vector<int> d;
void insert(int x) {
  if (q.empty()) {
    q.push(x);
    return;
  }
  if (q.top() != x) {
    q.push(x);
    return;
  }
  q.pop();
  insert(x + 1);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a), insert(a);
  while (!q.empty()) d.push_back(q.top()), q.pop();
  int k = d.size();
  printf("%d\n", k);
  for (int i = k - 1; i >= 0; i--) printf("%d%c", d[i], i ? ' ' : '\n');
  return 0;
}
