#include <bits/stdc++.h>
using namespace std;
struct node {
  int a, p, id, b;
} a[100005];
bool cmp(node a, node b) { return a.p > b.p; }
bool cmp1(node a, node b) { return a.id < b.id; }
int main() {
  int n, l, r;
  cin >> n >> l >> r;
  for (int i = 0; i < n; i++) scanf("%d", &a[i].a);
  for (int i = 0; i < n; i++) scanf("%d", &a[i].p), a[i].id = i;
  sort(a, a + n, cmp);
  a[0].b = r;
  for (int i = 1; i < n; i++) {
    a[i].b = min(a[i - 1].b - a[i - 1].a + a[i].a - 1, r);
  }
  for (int i = 0; i < n; i++) {
    if (a[i].b < l || a[i].b > r) {
      printf("-1");
      return 0;
    }
  }
  sort(a, a + n, cmp1);
  for (int i = 0; i < n; i++) {
    printf("%d ", a[i].b);
  }
  return 0;
}
