#include #include #include using namespace std; int main() { int N, M; while (cin >> N >> M) { if (N == 0 || M == 0) { break; } vector C(N); vector E(M); for (int i = 0; i < N; i++) { cin >> C[i]; } for (int j = 0; j < M; j++) { cin >> E[j]; } sort(C.begin(), C.end()); sort(E.rbegin(), E.rend()); bool possible = true; for (int i = 0; i < N; i++) { if (C[i] > M) { possible = false; break; } for (int j = 0; j < C[i]; j++) { if (E[j] == 0) { possible = false; break; } E[j]--; } if (C[i] < M && E[C[i]] > E[C[i]-1]) { int start = C[i]-1; int end = C[i]; while (start > 0 && E[start - 1] == E[C[i]-1]) { start--; } while (end < M - 1 && E[end + 1] == E[C[i]]) { end++; } while (start <= C[i]-1 && end >= C[i]) { E[start]++; E[end]--; start++; end--; } } } cout << (possible ? "Yes" : "No") << endl; } }