/* zadanie: Jedynki (egzamin z ASD 24.01.2009)
 * autor programu: Marek Cygan
 * opis programu: rozwiazanie wzorcowe, dla kazdej nowej liczby na wejsciu
 * dodajemy jedynke do trzymanego zapisu binarnego i dokonujemy przeniesienia
 * (jesli zaistnieje taka potrzeba), zlozonosc obliczeniowa O(n).
 */

#include <cstdio>

const int MAX_ZAKRES = 500000;
int rozwiniecie[MAX_ZAKRES + 100];  /* to 100 jest wazne! */
int jedynki = 0;

int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    int a;
    scanf("%d", &a);
    while (rozwiniecie[a] == 1) {
      jedynki--;
      rozwiniecie[a++] = 0;
    }
    rozwiniecie[a] = 1;
    jedynki++;
    printf("%d\n", jedynki);
  }
}
