#include #include int main(void) { int n, m, hMin, hMax; scanf("%d %d %d %d", &n, &m, &hMin, &hMax); int *h = malloc(n * sizeof(int)); int *s = malloc(m * sizeof(int)); int i, j; for (i = 0; i < n; i++) { scanf("%d", &h[i]); } for (i = 0; i < m; i++) { scanf("%d", &s[i]); } for (i = 0; i < n - 1; i++) { int min = h[i]; for( j = i + 1; j < n; j++) { if (h[j] < min) { min = h[j]; h[j] = h[i]; h[i] = min; } } } for (i = 0; i < m - 1; i++) { int min = s[i]; for( j = i + 1; j < m; j++) { if (s[j] < min) { min = s[j]; s[j] = s[i]; s[i] = min; } } } for (i = 0; i < n; i++) { if (h[i] < hMin) { j = 0; while (h[i] + s[j] < hMin && j < m) { j++; } if (h[i] + s[j] > hMax) { printf("No\n"); return 0; } if (j == m && (h[i] + s[j] < hMin)) { printf("No\n"); return 0; } s[j] = 0; for (int k = 0; k < m - 1; k++) { int min = s[k]; for(int l = k + 1; l < m; l++) { if (s[l] < min) { min = s[l]; s[l] = s[k]; s[k] = min; } } } } if (h[i] >= hMin && h[i] <= hMax) { continue; } if (h[i] > hMax) { printf("No\n"); return 0; } } printf("Yes\n"); return 0; }