#include using namespace std; int main() { int n, m, _; cin >> n >> m; if(m > n * (n - 1) / 2) return cout << "no\n", 0; multiset w; auto it2 = w.end(); set is; for(int i = 0; i < n; ++i) is.insert(i); vector x(n); set> s; for(auto &y : x) cin >> y; while(m--) cin >> _, w.insert(_); for(int d = 1; d < n; ++d) { bool done = true; for(auto it = is.begin(); it != is.end();) { if(*it + d >= n) break; if((it2 = w.lower_bound(x[*it + d] - x[*it])) != w.end()) { w.erase(it2); done = false; if(w.empty()) return cout << "yes\n", 0; ++it; } else { it = is.erase(it); } } if(done || is.empty()) return cout << "no\n", 0; } }