#include <bits/stdc++.h>
using namespace std;
int p[111111], q[111111], ans[111111], n, m, x;
stack<pair<int, int> > S;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d", &x);
    p[x]++;
  }
  for (int j = 0; j < n; j++) {
    scanf("%d", &x);
    q[m - x - 1]++;
  }
  for (int t = 0; t < 2; t++)
    for (int i = 0; i < m; i++) {
      if (p[i]) S.push(make_pair(i, p[i]));
      p[i] = 0;
      while (q[i] && S.size()) {
        if (S.top().second <= q[i]) {
          ans[(m + i - S.top().first) % m] += S.top().second;
          q[i] -= S.top().second;
          S.pop();
        } else {
          ans[(m + i - S.top().first) % m] += q[i];
          pair<int, int> tmp = make_pair(S.top().first, S.top().second - q[i]);
          S.pop();
          S.push(tmp);
          q[i] = 0;
        }
      }
    }
  for (int i = 0; i < m; i++)
    for (int j = 0; j < ans[i]; j++) printf("%d ", m - i - 1);
  cout << endl;
  return 0;
}
