#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
struct Node {
  int a, px, ori, c;
} node[N];
int n, l, r;
bool cmp_px(Node &a, Node &b) { return a.px < b.px; }
bool cmp_ori(Node &a, Node &b) { return a.ori < b.ori; }
int main() {
  cin >> n >> l >> r;
  int t;
  for (int i = 0; i < n; i++) {
    cin >> t;
    node[i].ori = i;
    node[i].a = t * (-1);
    node[i].c = l;
  }
  for (int i = 0; i < n; i++) {
    cin >> t;
    node[i].px = t;
  }
  sort(node, node + n, cmp_px);
  for (int i = 1; i < n; i++) {
    if (node[i].a > node[i - 1].a) continue;
    int cha = node[i - 1].a - node[i].a;
    node[i].a = node[i].a + cha + 1;
    node[i].c += cha + 1;
    if (node[i].c > r) {
      cout << -1 << endl;
      return 0;
    }
  }
  {
    sort(node, node + n, cmp_ori);
    for (int i = 0; i < n; i++) {
      cout << node[i].c << " ";
    }
  }
  return 0;
}
