#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.precision(10);
  cout << fixed;
  srand(time(0));
  int q, x;
  cin >> q >> x;
  vector<pair<int, int>> seg(2 * x + 5);
  for (int i = 0; i < x; i++) {
    seg[x + i].second = i;
  }
  for (int i = 1; i < x; i++) {
    seg[i] = {0, 1e6};
  }
  auto update = [&](int pos) {
    for (seg[pos += x].first++; pos > 1; pos >>= 1) {
      if (seg[pos].first < seg[pos ^ 1].first) {
        seg[pos >> 1] = seg[pos];
      } else if (seg[pos].first > seg[pos ^ 1].first) {
        seg[pos >> 1] = seg[pos ^ 1];
      } else {
        if (seg[pos].second < seg[pos ^ 1].second) {
          seg[pos >> 1] = seg[pos];
        } else {
          seg[pos >> 1] = seg[pos ^ 1];
        }
      }
    }
  };
  auto get = [&]() { return seg[1]; };
  while (q--) {
    int a;
    cin >> a;
    a %= x;
    update(a);
    pair<int, int> ans = get();
    if (ans.second == 1e6)
      cout << "1\n";
    else
      cout << ans.first * x + ans.second << "\n";
  }
  return 0;
}
