#include <bits/stdc++.h>
using namespace ::std;
const long long maxn = 1e5 + 500;
const long long mod = 1e9 + 7;
const long long inf = 1e9 + 500;
long long cnt1[maxn];
long long cnt2[maxn];
set<pair<long long, long long> > st;
set<pair<long long, long long> > stt[maxn];
long long jam[maxn];
set<long long> hast;
long long mm;
long long ghabl(long long a) {
  set<long long>::iterator it;
  it = hast.upper_bound(a);
  if (it == hast.begin()) {
    it = hast.end();
    it--;
    return (*it);
  } else {
    it--;
    return (*it);
  }
}
long long fas(long long a, long long b) {
  if (b < a) return a - b;
  return a + mm - b;
}
int main() {
  long long n, m;
  cin >> n >> m;
  mm = m;
  for (long long i = 0; i < n; i++) {
    long long v;
    cin >> v;
    cnt1[v]++;
  }
  for (long long i = 0; i < n; i++) {
    long long v;
    cin >> v;
    cnt2[v]++;
  }
  for (long long i = 0; i < m; i++) {
    if (cnt2[i] > 0) {
      hast.insert(i);
    }
  }
  for (long long i = 0; i < m; i++) {
    if (cnt1[i] > 0) {
      long long v = ghabl((m - 1 - i) % m);
      stt[v].insert(make_pair(-((v + i) % m), i));
    }
  }
  for (long long i = 0; i < m; i++) {
    if (stt[i].size() == 0) {
      stt[i].insert(make_pair(0, 0));
    }
    if (cnt2[i] > 0) {
      st.insert(make_pair((*(stt[i].begin())).first, i));
    }
  }
  for (long long qq = 0; qq < n; qq++) {
    set<pair<long long, long long> >::iterator it;
    it = st.begin();
    cout << (-((*it).first)) << endl;
    if (qq == n - 1) {
      return 0;
    }
    long long k = (*it).second;
    st.erase(it);
    long long v = ((*(stt[k].begin())).second);
    cnt1[v]--;
    if (cnt1[v] == 0) {
      stt[k].erase(stt[k].begin());
    }
    cnt2[k]--;
    if (cnt2[k] == 0) {
      hast.erase(k);
      v = ghabl(k);
      st.erase(make_pair((*(stt[v].begin())).first + jam[v], v));
      if (stt[k].size() < stt[v].size()) {
        for (set<pair<long long, long long> >::iterator itt = stt[k].begin();
             itt != stt[k].end(); itt++) {
          stt[v].insert(make_pair((*itt).first + jam[k] - jam[v] + fas(k, v),
                                  (*itt).second));
        }
        stt[k].clear();
      } else {
        jam[k] += fas(k, v);
        for (set<pair<long long, long long> >::iterator itt = stt[v].begin();
             itt != stt[v].end(); itt++) {
          stt[k].insert(
              make_pair((*itt).first + jam[v] - jam[k], (*itt).second));
        }
        stt[v].clear();
        swap(stt[k], stt[v]);
        swap(jam[k], jam[v]);
      }
      st.insert(make_pair((*(stt[v].begin())).first + jam[v], v));
    } else {
      st.insert(make_pair(((*stt[k].begin()).first) + jam[k], k));
    }
  }
}
