#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, i;
  scanf("%d", &n);
  long long int a[n];
  set<long long int> x;
  map<long long int, set<int> > m;
  for (i = 0; i < n; i++) {
    scanf("%lld", &a[i]);
    x.insert(a[i]);
    m[a[i]].insert(i);
  }
  while (!x.empty()) {
    long long int j = *x.begin();
    if (m[j].size() >= 2) {
      m[j].erase(m[j].begin());
      int k = *(m[j].begin());
      m[j].erase(m[j].begin());
      m[2 * j].insert(k);
      x.insert(2 * j);
    } else {
      x.erase(x.begin());
    }
  }
  vector<pair<int, long long int> > ans;
  map<long long int, set<int> >::iterator it;
  for (it = m.begin(); it != m.end(); it++) {
    if ((it->second).size() == 1) {
      ans.push_back(make_pair(*(it->second).begin(), it->first));
    }
  }
  sort(ans.begin(), ans.end());
  cout << ans.size() << endl;
  for (i = 0; i < ans.size(); i++) {
    printf("%lld ", ans[i].second);
  }
  printf("\n");
}
