#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e9 + 228;
const long long MAXN = 5e5 + 228;
long long cnt[MAXN];
long long ost[MAXN];
long long nx[MAXN];
long long get(long long x) {
  if (cnt[x] == 0) {
    return x;
  }
  return nx[x] = get(x + 1);
}
signed main() {
  cin.tie(0);
  cin.sync_with_stdio(0);
  cout.tie(0);
  ;
  long long n, x;
  cin >> n >> x;
  long long me = 0;
  for (long long i = 0; i < MAXN; i++) {
    nx[i] = i;
  }
  vector<long long> v;
  for (long long i = 0; i < n; i++) {
    long long aa;
    cin >> aa;
    v.push_back(aa);
    if (aa < MAXN) cnt[aa]++;
    ost[aa % x]++;
    while (ost[me % x] > me / x) {
      me = get(me + 1);
    }
    cout << me << '\n';
  }
  return 0;
}
